所以我有两个数组,比较数组用于匹配的元素
ARR1包含了一个ID列表:
var arr1 = new Array(1,2,3);
ARR2含有id's匹配的IDS对象的列表我ARR1
var2 = [
{id:1,
name: "bob"},
{id:2,
name:"Moore"}
]
我该如何'循环'这些数组,并且在发现匹配时发生一些代码?
所以我有两个数组,比较数组用于匹配的元素
ARR1包含了一个ID列表:
var arr1 = new Array(1,2,3);
ARR2含有id's匹配的IDS对象的列表我ARR1
var2 = [
{id:1,
name: "bob"},
{id:2,
name:"Moore"}
]
我该如何'循环'这些数组,并且在发现匹配时发生一些代码?
遍历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);
非常感谢大家。我实际上将@tymeJV与这个答案结合在一起,因为这个也会将结果推送到一个数组中。谢谢你们俩! – RogerDore
这是一个 “关联数组”
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 } } }
http://www.w3schools.com/js/js_arrays.asp –
我在想其他的东西。 为什么不只是双循环? (var i = 0; j
看,检查,逻辑:
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
}
}
}
如果我需要这些匹配,我会使用filter
。
var matches = arr2.filter(function (item) {
return arr1.indexOf(item.id) > -1;
});
然后,我会尽我所需与matches
。
如果我只是需要看看是否存在,我会使用some
。从
var hasMatch = arr2.some(function (item) {
return arr1.indexOf(item.id) > -1;
});
if (hasMatch) {
doSomething();
}
开始[这](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration) – hindmost
你要什么时,他们发现这样做?你想收集所有来自var2的项目与arr1中的id匹配吗?另外,你有什么尝试? –
'var2'数组有一些无效值。假设名字是字符串.. –