Javascript 通过组合这两个其他阵列来生成此阵列

Javascript 通过组合这两个其他阵列来生成此阵列,javascript,arrays,node.js,Javascript,Arrays,Node.js,我在node.js中有2个数组 var alerts_arr = [ { "Name": "XXX", "symbol": "XXX.SI", "relationship": ">=", "price_alert": 3, "Remarks": "" }, { "Name": "YYY", "symbol": "YYY.SX", "relationship": ">=", "price_alert": 2.21, "Remark

我在node.js中有2个数组

var alerts_arr =
[
    {
        "Name": "XXX", "symbol": "XXX.SI", "relationship": ">=", "price_alert": 3, "Remarks": ""
    },
    {
        "Name": "YYY", "symbol": "YYY.SX", "relationship": ">=", "price_alert": 2.21, "Remarks": ""
    }
];

var results_arr =
    [
        {
            "symbol": "XXX", "name": "XXX.SI", "lastDate": "2015-11-05T16:00:00.000Z", "lastPriceOnly": 3.05
        }
        ,
        {
            "symbol": "YYY", "name": "YYY.SX", "lastDate": "2015-11-05T16:00:00.000Z", "lastPriceOnly": 2.2
        }
    ];
我想将这两个数组组合起来,结果如下所示

var combine_arr =
    [
        {
            "Name": "XXX",
            "symbol": "XXX.SI",
            "relationship": ">=",
            "price_alert": 3,
            "Remarks": "",
            "lastDate": "2015-11-05T16:00:00.000Z",
            "lastPriceOnly": 3.05
        },
        {
            "Name": "YYY",
            "symbol": "YYY.SX",
            "relationship": ">=",
            "price_alert": 2.21,
            "Remarks": "",
            "lastDate": "2015-11-05T16:00:00.000Z",
            "lastPriceOnly": 2.2
        }
    ]
;
如何在node.js或javascript中实现这一点


我尝试了
var finalObj=alerts\u arr.concat(results\u arr)最初,但结果非常差

var _ = require('lodash');


var alerts_arr =
[
{
    "Name": "XXX", "symbol": "XXX.SI", "relationship": ">=", "price_alert": 3, "Remarks": ""
},
{
    "Name": "YYY", "symbol": "YYY.SX", "relationship": ">=", "price_alert": 2.21, "Remarks": ""
}
];

var results_arr =
[
{
    "symbol": "XXX", "name": "XXX.SI", "lastDate": "2015-11-05T16:00:00.000Z", "lastPriceOnly": 3.05
}
,
{
    "symbol": "YYY", "name": "YYY.SX", "lastDate": "2015-11-05T16:00:00.000Z", "lastPriceOnly": 2.2
}
];


var transformed_arr = alerts_arr.map(function(item) {
  var obj = {};
  Object.keys(item).forEach(function(key) {
    if(key === 'Name') {
      obj['symbol'] = item[key];
    } else if(key === 'symbol') {
      obj['name'] = item[key];
    } else { 
      obj[key] = item[key]; 
    }
  });
  return obj;
});

var result = _.merge(transformed_arr, results_arr);
  • 转换
    警报\u arr
    以匹配结果\u arr
  • 然后使用
    lodash
    merge
    合并两个数组
  • 转换
    警报\u arr
    以匹配结果\u arr
  • 然后使用
    lodash
    merge
    合并两个数组

  • 假设值是唯一的,并且symbolname是键,下面是一个快速示例(无错误处理):

    var组合_arr=[];
    //转换为关联数组以加快抓取速度
    var转换结果=结果减少(功能(上一个,当前){
    上一个[当前.名称]=当前;
    返回上一个;
    }, {});
    对于(变量i=0;i
    假设值是唯一的,并且symbolname是键,下面是一个快速示例(无错误处理):

    var组合_arr=[];
    //转换为关联数组以加快抓取速度
    var转换结果=结果减少(功能(上一个,当前){
    上一个[当前.名称]=当前;
    返回上一个;
    }, {});
    对于(变量i=0;i
    您也可以使用一行代码来解决此问题:

    _.zipWith([ alerts_arr, results_arr ], _.merge)
    
    您还可以使用在一行中解决此问题:

    _.zipWith([ alerts_arr, results_arr ], _.merge)
    

    那不是。这些都是简单的对象。@RokoC.Buljan-在
    var-alerts\u-arr上尝试JSON.parse=[…
    etc-你会发现这不是JSON@RokoC.BuljanJSON是对象的字符串表示,因此acronym@user768421-您自己尝试过什么吗,或者您是否忙于在问题中编辑JSON?我尝试了
    var finalObj=alerts\u arr.concat(results\u arr)
    。但这太离谱了。事实并非如此。这些都是简单的对象。@RokoC.Buljan-在
    var-alerts\u-arr上尝试JSON.parse=[…
    etc-你会发现这不是JSON@RokoC.BuljanJSON是对象的字符串表示,因此acronym@user768421-您自己尝试过什么吗,或者您是否忙于在问题中编辑JSON?我尝试了
    var finalObj=alerts\u arr.concat(results\u arr)
    。但这很不恰当。我可以问一下
    警报\u arr
    以何种方式转换为匹配
    结果\u arr
    ?为什么在合并之前需要进行匹配?因为结果中的
    名称
    符号
    在更改中,这就是我需要转换的原因。我可以问一下
    警报\u arr
    以何种方式转换为matc吗h
    results\u arr
    ?为什么需要在合并之前进行匹配?因为results\u arr中的
    名称是alters\u arr中的
    符号,这就是我需要转换的原因