比较匹配元素的数组

时间:2015-10-19 15:38:03

标签: javascript arrays

所以我有两个数组,

arr1包含一个id列表:

var arr1 = new Array(1,2,3);

arr2包含id与iid 匹配的对象列表

 var2 = [
{id:1,
name: "bob"},
{id:2,
name:"Moore"}
]

我怎样才能将这些数组相互“循环”并在找到匹配项时发生一些代码?

4 个答案:

答案 0 :(得分:1)

如果我需要匹配,我会使用sass --compass config.rb

filter

然后我会用var matches = arr2.filter(function (item) { return arr1.indexOf(item.id) > -1; }); 完成我需要的工作。

如果我只是需要查看是否存在,我会使用matches

some

答案 1 :(得分:0)

这是一个“关联数组”

   for(var i = 0;i<var2.length;i++){
     if(var2[var1[i]]){
       //do some mother trucking code
     }
   }
实际上,我正在考虑其他事情。为什么不只是双循环?

for(var i = 0;i<arr1.length;i++){ for(var j = 0;j<var2.length;j++){ if(arr1[i] === var2[j].id){ //do stuff } } } 

答案 2 :(得分:0)

看,检查,逻辑:

for (var i = 0; i < arr1.length; i++) {
    for (var j = 0; j < var2.length; j++) {
        if (arr1[i] == var2[j].id) {
            //logic for match
        }
    }
}

答案 3 :(得分:0)

循环访问id数组,检查每个对象数组。此外,对象数组I中的一些无效值也在下面修复。

var arr1 = new Array(1,2,3);
var arr2 = [
    {
        id:1,
        name: 'bob'
    },
    {
        id:2,
        name: 'moore'
    }
];

var results = [];
var index = 0, length = arr1.length;
for ( ; index < length; index++) {
    var subIndex = 0, subLength = arr2.length;
    for ( ; subIndex < subLength; subIndex++) {
        if (arr1[index] == arr2[subIndex].id) {
            results.push(arr2[subIndex]);
        }
    }
}
console.log(results);