我无法绕过这一个。有人可以告诉我一个这样做的功能的例子。我需要一个可以执行此操作的javascript函数
如果所有array1s值都匹配array2s值,则返回true如果没有/部分匹配返回array1s值不匹配
array1 = [{name:'joe'},{name:'jill'},{name:'bob'}]
array2 = [{name:'joe'},{name:'jason'},{name:'sam'}]
match(array1, array2)
//if fails returns [{name:'jill'}, {name:'bob'}]
//if success returns true
请帮助我的大脑伤害XD
由于
编辑:很抱歉,在对象之前没有其他一些不相同的属性之前不要说这个。所以给定的对象看起来像
array1x = [{name:'joe', id:33},{name:'jill'},{name:'bob'}]
array2x = [{name:'joe', state:'fl'},{name:'jill'},{name:'bob'}]
我需要匹配对象中的name属性
答案 0 :(得分:3)
Array.prototype.filter() + Array.prototype.some() =
function match(arr1, arr2) {
var notFound = arr1.filter(function(obj1) {
return !arr2.some(function(obj2) {
return obj2.name == obj1.name;
});
});
return !notFound.length || notFound;
}
答案 1 :(得分:0)
以下是此类功能的一个非常基本的示例:
function match(array1, array2) {
var len = Math.max(array1.length, array2.length),
result = [];
for (var i = 0; i < len; i++) {
if (JSON.stringify(array1[i]) !== JSON.stringify(array2[i])) {
result.push(array1[i]);
}
}
return result.length > 0 ? result : true;
}
它将比较序列化元素,因为它们逐个考虑索引。