所以我的目标是拥有一个对象变量,该变量在开始时为空,但是随着代码开始运行,它将被来自其他变量的数据填充。装满后,它应该看起来像这样:
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对象。任何想法如何使其工作?还要注意,将它们放在对象数组中不是一种选择,因为列表将非常庞大,因此时间效率将非常低。
答案 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]})