Javascript 通过组合这两个其他阵列来生成此阵列
我在node.js中有2个数组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
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吗hresults\u arr
?为什么需要在合并之前进行匹配?因为results\u arr中的名称是alters\u arr中的符号,这就是我需要转换的原因