我有2个数组,需要匹配它们的数据。我需要从第一个数组获取ID
,从第二个数组获得market_name
。我需要使用这两个数组,即使wgg
数组看起来无关紧要。我正在使用if
来匹配数据:item.market_name == wgg[j].market_name
它运行良好,但如果下面有相同market_name
的值超过1,则会为它们打印所有相同的ID。例如,它打印的内容:
market_name | ID
John | 151
John | 151
John | 151
Sam | 115
Somebody | 110
第一个数组(项目):
market_name | ID
John | 151
John | 100
John | 180
Sam | 115
Somebody | 110
第二个数组(wgg [j]):
market_name | ID
John | 105
John | 209
John | 401
Sam | 115
Somebody | 110
应该如何:
market_name | ID
John | 151
John | 100
John | 180
Sam | 115
Somebody | 110
JS:
tradedata.forEach(function(item, j) {
var resultas = tradedata.filter(function(item) {
if (item.market_name == wgg[j].market_name) {
assetas = item.id;
return assetas;
}
});
if (resultas.length > 0) {
console.log(wgg[j].market_name);
console.log(assetas);
}
}
答案 0 :(得分:0)
这就是你描述的内容
var tradedata = [
{ market_name: 'John', id: 151},
{ market_name: 'John', id: 100},
{ market_name: 'John', id: 180},
{ market_name: 'Sam', id: 115},
{ market_name: 'Somebody', id: 110}
];
var wgg = [
{ market_name: 'John', id: 105},
{ market_name: 'John', id: 209},
{ market_name: 'John', id: 401},
{ market_name: 'Sam', id: 115},
{ market_name: 'Somebody', id: 110}
];
var result = wgg.reduce(function(obj, item) {
if (!obj.names[item.market_name]) {
obj.names[item.market_name] = true;
obj.data = obj.data.concat(tradedata.filter(function(trade) {
return trade.market_name == item.market_name;
})
);
}
return obj;
}, {names:{}, data:[]}).data;
result.forEach(function(x) {
console.log(x);
})