您可以使用
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);