所以我有兩個數組,比較數組用於匹配的元素
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'數組有一些無效值。假設名字是字符串.. –