Javascript 从两个具有公共密钥属性的数组中查找对象的有效方法是什么?
从array2中查找对象的有效方法是什么?array2在ArrayA和ArrayB之间具有公共属性值 在ArrayB的键中查找ID值为的数组B中的所有对象Javascript 从两个具有公共密钥属性的数组中查找对象的有效方法是什么?,javascript,arrays,Javascript,Arrays,从array2中查找对象的有效方法是什么?array2在ArrayA和ArrayB之间具有公共属性值 在ArrayB的键中查找ID值为的数组B中的所有对象 var ArrayA = [ {"ID":"1","ID_DESC":"Test_DESC 1"}, {"ID":"2","ID_DESC":"Test_DESC 2"}, {"ID":"3","ID_DESC":"Test_DESC 3"}
var ArrayA = [
{"ID":"1","ID_DESC":"Test_DESC 1"},
{"ID":"2","ID_DESC":"Test_DESC 2"},
{"ID":"3","ID_DESC":"Test_DESC 3"}
];
var ArrayB = [
{"KEY":"1","KEYDESC":"ID property NAME IS DIFFERENT HERE"},
{"KEY":"20","KEYDESC":"ID NAME IS DIFFERENT HERE "},
{"KEY":"30","KEYDESC":"ID3 NAME IS DIFFERENT HERE"},
{"KEY":"40","KEYDESC":"ID4 NAME IS DIFFERENT HERE"}
];
var CommonArray = [
{"KEY":"1","KEYDESC":"ID NAME IS DIFFERENT HERE"}
];
尝试从
或快速脏功能:
function intersectBy(param1, param2, property) {
this.output = [];
var p1l = param1.length,
p2l = param2.length;
for (var i = 0; i < p1l; i++) {
var currentI = param1[i];
for (var j = 0; j < p2l; j++){
var currentJ = param2[j];
if (currentI && currentI[property] && currentJ && currentJ[property] && currentI[property] === currentJ[property]) {
this.output.push(currentI);
}
}
}
return this.output;
}
函数相交(param1,param2,属性){
this.output=[];
变量p1l=param1.length,
p2l=参数2.5长度;
对于(变量i=0;i
您可以使用哈希表并过滤第二个数组
var array1=[{ID:“1”,ID_DESC:“Test_DESC 1”},{ID:“2”,ID_DESC:“Test_DESC 2”},{ID:“3”,ID_DESC:“Test_DESC 3”}],
array2=[{KEY:“1”,KEYDESC:“ID属性名称在这里不同”},{KEY:“20”,KEYDESC:“ID名称在这里不同”},{KEY:“3”,KEYDESC:“ID3名称在这里不同”},{KEY:“40”,KEYDESC:“ID4名称在这里不同”},
结果=函数(array1,array2){
var hash=Object.create(null);
forEach(函数(a){hash[a.ID]=true;});
返回array2.filter(函数(a){returnhash[a.KEY];});
}(第1排,第2排);
控制台日志(结果)代码>
.as console wrapper{max height:100%!important;top:0;}
是否存在不使用库的JS?使用第一个选项每次都会得到1个数组,而不检查数组2。使用选项2 facing>无效error@Viru,在第一个示例中,我更改了array2
,现在在结果集中有两个项目。到底是什么不起作用?