数组对象中的javascript数组对象

时间:2014-03-20 17:53:35

标签: javascript jquery loops object nested-loops

我无法绕过这一个。有人可以告诉我一个这样做的功能的例子。我需要一个可以执行此操作的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属性

2 个答案:

答案 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;
}

fiddle

答案 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;
}

它将比较序列化元素,因为它们逐个考虑索引。