gpt4 book ai didi

javascript - 没有对象数组

转载 作者:行者123 更新时间:2023-12-02 15:19:00 24 4
gpt4 key购买 nike

我正在尝试实现一个类似于 lodash _.without 的函数,但它应该适用于对象数组:

function withoutArrayOfObjects (arr1, arr2) {
var resultArr = [];
for (var i = 0; i < arr1.length; i++) {
for (var j = 0; j < arr2.length; j++) {
if (!_.isEqual(arr1[i], arr2[j])) {
resultArr.push(arr1[i]);
}
}
}
return resultArr;
}

在这种情况下效果很好:

var array1 = [{0: 'test', 1: 'test2'}, {0: 'test3', 1: 'test4'}];
var array2 = [{0: 'test', 1: 'test2'}];
withoutArrayOfObjects(array1, array2);

但是,如果数组包含两个对象,则会失败:

var array3 = [{0: 'test', 1: 'test2'}, {0: 'test3', 1: 'test4'}, {0: 'test5', 1: 'test6'}, {0: 'test7', 1: 'test8'}];
var array4 = [{0: 'test', 1: 'test2'}, {0: 'test5', 1: 'test6'}];
withoutArrayOfObjects(array3, array4);

你能帮我修复/改进该功能吗?使用纯 JS 或 jquery/lodash。

最佳答案

试试这个(ES6):

resultArr = arr1.filter(obj1 => {
return !arr2.some(obj2 => _.isEqual(obj1, obj2));
});

或者在 ES5 中:

resultArr = arr1.filter(function (obj1) {
return !arr2.some(function (obj2) {
return _.isEqual(obj1, obj2);
});
});

即我们通过过滤过滤出在arr2中具有一些等价项,从arr1创建一个新数组。

关于javascript - 没有对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34241263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com