javascript字典中添加数组_在javascript中合并两个字典数组

您可以使用

Array#map方法生成新数组(假设两个数组的顺序相同).

var lat = [{key:"2017-09-20T11:51:32.000Z", value:50.7825333},{key:"2017-09-20T11:51:33.000Z", value:50.7826}];

var lon = [{key:"2017-09-20T11:51:32.000Z", value:-1.3075833},{key:"2017-09-20T11:51:33.000Z", value:-1.3076}];

var res = lat

// iterate over the first array

.map(function(o, i) {

// generate the array element

// where get values from element and

// get value from second array using

// the index

return {

time: o.key,

lat: o.value,

lon: lon[i].value

}

})

console.log(res);

// with ES6 arrow function

var res1 = lat.map((o, i) => ({time: o.key, lat: o.value, lon: lon[i].value}))

console.log(res1);

仅供参考:如果相关数组元素的顺序不同,则需要通过比较时间值(可以使用Array#find方法)从第二个数组中获取元素,或者生成一个哈希映射来映射对象.

var lat = [{key:"2017-09-20T11:51:32.000Z", value:50.7825333},{key:"2017-09-20T11:51:33.000Z", value:50.7826}];

var lon = [{key:"2017-09-20T11:51:32.000Z", value:-1.3075833},{key:"2017-09-20T11:51:33.000Z", value:-1.3076}];

var res = lat

.map(function(o) {

return {

time: o.key,

lat: o.value,

// get object by using find method

lon: lon.find(function(o1) {

return o1.key === o.key;

}).value

}

})

console.log(res);

// with ES6 arrow function

var res1 = lat.map(o => ({

time: o.key,

lat: o.value,

lon: lon.find(o1 => o1.key === o.key).value

}))

console.log(res1);

使用hashmap进行引用的更有效方法:

var lat = [{key:"2017-09-20T11:51:32.000Z", value:50.7825333},{key:"2017-09-20T11:51:33.000Z", value:50.7826}];

var lon = [{key:"2017-09-20T11:51:32.000Z", value:-1.3075833},{key:"2017-09-20T11:51:33.000Z", value:-1.3076}];

// generate reference hashmap for getting

// value using the datetime string

var ref = lon.reduce(function(obj, o) {

// set reference

obj[o.key] = o.value;

// return the reference object

return obj;

// set initial value as an empty object

}, {});

var res = lat

.map(function(o) {

return {

time: o.key,

lat: o.value,

// get value from generated reference object

lon: ref[o.key]

}

})

console.log(res);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值