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 对象。知道如何使它工作吗?另请注意,将它们放在对象数组中不是一种选择,因为列表会很大,因此时间效率会很差。
解决方案
您可以这样做,但是可以进行验证以确保所有三个数组的长度相同。
每当您想将属性添加到属性值是另一个变量的值的对象时,最好使用括号表示法将属性添加到对象 [],如下所示。
还有一件事最好使用 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));
推荐阅读
- java - 在不使用方法的情况下删除数组重复项
- java - 如何解决创建和连接数据库时无法建立与jdbc的连接错误?
- .htaccess - SLIM 3 logn 中间件进入循环
- php - 在 maatwebsite 中换行不适用于 laravel
- react-native - 如何在 SwitchNavigator 下不同 StackNavigator 的屏幕之间导航?
- node.js - 如果 forEach 使用 Promise.all 而不是 async/await
- c# - 点击时没有 URL 参数
- python - 字符串连接如何在 python 中工作?
- junit4 - Maven surefire 插件在最后输出所有错误 - 在大型测试中导致 OOME
- javascript - stenciljs 手表装饰器不触发