我有一個數組:如何搜索兩個數組並查找是否匹配?
[{name:'blah',id:1},{name:'blah2',id:3}]
我有另一個數組:
[{type:'blah',uid:3435},{type:'blah2',uid:3}]
我想結束了:
[{newname:'blah2',uidid:3}]
你可以看到我想要的兩個基於匹配在id = uid的映射上。真的很努力想在js中找到辦法做到這一點。我已安裝underscore
。
我有一個數組:如何搜索兩個數組並查找是否匹配?
[{name:'blah',id:1},{name:'blah2',id:3}]
我有另一個數組:
[{type:'blah',uid:3435},{type:'blah2',uid:3}]
我想結束了:
[{newname:'blah2',uidid:3}]
你可以看到我想要的兩個基於匹配在id = uid的映射上。真的很努力想在js中找到辦法做到這一點。我已安裝underscore
。
你可以建立一個哈希表的第一陣列和第二陣列的重複使用。
var array1 = [{ name: 'blah', id: 1 }, { name: 'blah2', id: 3 }],
array2 = [{ type: 'blah', uid: 3435 }, { type: 'blah2', uid: 3 }],
hash = Object.create(null),
match = [];
array1.forEach(function (a) {
hash[a.id] = a;
});
array2.forEach(function (a) {
hash[a.uid] && match.push({ newname: a.type, uidid: a.uid });
});
console.log(match);
既然你想要一個數組與對象,使用不同的鍵名稱,這樣的事情會工作。沒有任何複雜的語法或邏輯,閱讀和理解也很簡單。
var arr1 = [{name: 'blah', id: 1}, {name: 'blah2', id: 3}];
var arr2 = [{type: 'blah', uid: 3435}, {type: 'blah2', uid: 3}];
var arr3 = [];
arr1.forEach(function(obj1, i) {
arr2.forEach(function(obj2) {
if (obj1.id == obj2.uid) {
arr3.push({newname: obj1.name, uidid: obj1.id})
}
})
});
console.log(arr3);
這是正確的答案,但我從Ninas學到了更多,因爲我總是在想如何使用散列圖工作。 – Exitos
PHPJS讓您與功能'array_combine()'和'array_intersection()'。萬歲phpjs! –
你想基於'id'和'uid'進行匹配嗎? – thefourtheye
是的,如果這是PHP – Exitos