从两个不同的数组创建一个JSON对象

时间:2018-11-14 21:45:37

标签: javascript node.js

我有两个长度相同的数据数组,并且索引相关。

var a = [ "Paris", "London", "Boston"];
var b = [ 70,60,50];

我想要获得以下对象:

[{
    "city":"Paris",
    "temperature":70
},{
    "city":"London",
    "temperature":60
},{
    "city":"Boston",
    "temperature":50
}]

如何使用javascript实现此目的?

3 个答案:

答案 0 :(得分:4)

您可以为此使用“ Array.map

var a = [ "Paris", "London", "Boston"];
var b = [ 70,60,50];

let result = a.map((city, i) => ({ city, temperature: b[i] }))

console.log(result)

答案 1 :(得分:2)

要获得预期的结果,请使用下面的选项(假设两个数组的长度相同)

  1. 循环第一个数组
  2. 将每个具有相应第二个数组值的值分配给结果数组

var a = [ "Paris", "London", "Boston"];
var b = [ 70,60,50];
var result = [];

a.forEach((v, i) =>{
  result.push({city: v, temperature: b[i]})
})

console.log(result)

codepen-https://codepen.io/nagasai/pen/gQWpxj

答案 2 :(得分:0)

此解决方案通过避免使用硬编码属性来使用其他方法。

您可以通过迭代对象的条目来获取对象并构建对象数组。这种方法适用于任意数量的属性。

var city = ["Paris", "London", "Boston"],
    temperature = [70, 60, 50],
    data = { city, temperature },
    result = Object
        .entries(data)
        .reduce((r, [k, a]) => a.map((v, i) => Object.assign(r[i] || {}, { [k]: v })), []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }