JS匹配2个数组

时间:2015-09-15 04:54:18

标签: javascript arrays node.js

我有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);
    }
}

1 个答案:

答案 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);    
})