首页 > 解决方案 > 使用来自变量的数据将数据添加到 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 对象。知道如何使它工作吗?另请注意,将它们放在对象数组中不是一种选择,因为列表会很大,因此时间效率会很差。

标签: node.jsjson

解决方案


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

每当您想将属性添加到属性值是另一个变量的值的对象时,最好使用括号表示法将属性添加到对象 [],如下所示。

还有一件事最好使用 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));


推荐阅读