使用变量中的数据将数据添加到JSON对象

时间:2019-10-28 15:21:00

标签: node.js json

所以我的目标是拥有一个对象变量,该变量在开始时为空,但是随着代码开始运行,它将被来自其他变量的数据填充。装满后,它应该看起来像这样:

var fruits = [banana, apple, ...];
var colors = [yellow, green, ...];
var calories = [300, 250, ...]

//the JSON object
{
    banana : 
    {
        "color" : "yellow",
        "calories" : 300
    },
    apple :
    {
        "color" : "green",
        "calories" : 250
    },
    ...
}

如您所见,所有数据都应该从其他变量中提取,这就是我遇到问题的地方。我尝试了以下方法:

var object.fruits[0] = {colors : calories};

//also tried this
var object.fruits[0] = "{""'" + (colors[0]) + "'":+calories[0]+"}";
//and tried many other things...

我已经至少一个小时未能对此进行反击,更糟糕的是某些数据应该来自其他JSON对象。任何想法如何使其工作?还要注意,将它们放在对象数组中不是一种选择,因为列表将非常庞大,因此时间效率将非常低。

3 个答案:

答案 0 :(得分:1)

也许尝试这样的事情

res = {}

fruits.map((key, index) => {
    res[key] = {
        'color': colors[index],
        'calories': calories[index]
    }
})

答案 1 :(得分:1)

您可以这样做,但是要进行验证以确保所有三个数组的长度相等。

每当要将属性添加到对象(其中属性值是另一个变量的值)时,最好使用方括号符号将属性添加到对象[],如下所示。

还有一件更好的事情是使用let和const代替var。

最后,您可以使用JSON.stringify()从Javascript对象转换为JSON字符串。

'use strict';

const fruits = ['banana', 'apple'];
const colors = ['yellow', 'green'];
const calories = [300, 250];

const fruits_object = {};
for (let i = 0; i < fruits.length; i++) {
  fruits_object[fruits[i]] = {};
  fruits_object[fruits[i]]['color'] = colors[i];
  fruits_object[fruits[i]]['calories'] = calories[i];
}

console.log(JSON.stringify(fruits_object));

答案 2 :(得分:0)

通常只需这样做:

颜色:颜色[0]

然后像这样对整个对象调用JSON.stringify

JSON.stringify({color:colors [0]})