![](/img/trans.png)
[英]Javascript : Compare two arrays and fill non matching elements with existing elements
[英]Compare arrays for matching elements
所以我有兩個數組
arr1包含ID列表:
var arr1 = new Array(1,2,3);
arr2包含對象列表,這些對象的id與id arr1匹配
var2 = [
{id:1,
name: "bob"},
{id:2,
name:"Moore"}
]
當找到匹配項時,如何使這些數組彼此“循環”並發生一些代碼?
如果需要比賽,我會使用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();
}
這是一個“關聯數組”
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 } } }
看,檢查,邏輯:
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
}
}
}
遍歷id數組,將每個數組與對象數組進行檢查。 我在下面修復的對象數組中還有一些無效值。
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.