Javascript 从两个具有公共密钥属性的数组中查找对象的有效方法是什么?

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"}

从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 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
,现在在结果集中有两个项目。到底是什么不起作用?