Javascript 如何搜索两个数组并查找是否存在匹配项?

Javascript 如何搜索两个数组并查找是否存在匹配项?,javascript,underscore.js,Javascript,Underscore.js,我有一个数组: [{name:'blah',id:1},{name:'blah2',id:3}] 我有另一个数组: [{type:'blah',uid:3435},{type:'blah2',uid:3}] 我想以以下方式结束: [{newname:'blah2',uidid:3}] 您可以看到,我希望根据id=uid的映射来匹配这两个。真的很难找到在js中实现这一点的方法。我已经安装了下划线。因为您需要一个包含使用不同键名的对象的数组,类似这样的东西可以工作。它也很容易阅读和理解,没有任

我有一个数组:

[{name:'blah',id:1},{name:'blah2',id:3}]
我有另一个数组:

[{type:'blah',uid:3435},{type:'blah2',uid:3}]
我想以以下方式结束:

[{newname:'blah2',uidid:3}]

您可以看到,我希望根据id=uid的映射来匹配这两个。真的很难找到在js中实现这一点的方法。我已经安装了
下划线

因为您需要一个包含使用不同键名的对象的数组,类似这样的东西可以工作。它也很容易阅读和理解,没有任何复杂的语法或逻辑

var arr1=[{name:'blah',id:1},{name:'blah2',id:3}];
var arr2=[{type:'blah',uid:3435},{type:'blah2',uid:3}];
var arr3=[];
arr1.forEach(功能(obj1,i){
arr2.forEach(功能(obj2){
如果(obj1.id==obj2.uid){
arr3.push({newname:obj1.name,uidid:obj1.id})
}
})
});

控制台日志(arr3)您可以使用第一个数组构建一个哈希表,并在第二个数组的迭代中使用它

var array1=[{name:'blah',id:1},{name:'blah2',id:3}],
array2=[{type:'blah',uid:3435},{type:'blah2',uid:3}],
hash=Object.create(null),
匹配=[];
数组1.forEach(函数(a){
散列[a.id]=a;
});
array2.forEach(函数(a){
hash[a.uid]&&match.push({newname:a.type,uidid:a.uid});
});

控制台日志(匹配)
PHPJS允许您使用函数
array\u combine()
array\u intersection()
。phpjs万岁!您想基于
id
uid
进行匹配吗?如果这是PHP
ar1.filter(item1=>ar2.some(item2=>item2.uid==item1.id))
的话,那么是的,您也想更改字段名吗?这是正确的答案,但我从Ninas那里学到了更多,因为我一直想知道散列映射是如何工作的。