我试图通过循环获得的数据来创建一个 json,这里的问题是我能够正确获取值,但是来到键时,它们没有按预期填充。这是我的代码。
var item = [{
"max": "0.575",
"ingredients": "a",
}, {
"max": "10.25",
"ingredients": "b"
}, {
"max": "98.5",
"ingredients": "c",
}];
var valuesForChart = {
data: []
};
item.forEach(function(subItem) {
var names = subItem.ingredients;
var level = subItem.max;
valuesForChart.data.push({
names: level
});
});
document.getElementById("x").innerHTML=JSON.stringify(valuesForChart);
这里item
是从我的数据库返回的。当我运行它时,我得到如下输出。
{"data":[{"names":"0.575"},{"names":"10.25"},{"names":"98.5"}]}
但我的预期输出是
{"data":[{"a":"0.575"},{"b":"10.25"},{"c":"98.5"}]}
很困惑我哪里出错了。请告诉我如何解决这个问题。
这是一个工作 fiddle 。 https://jsfiddle.net/j8gj9uv0/2/
谢谢
最佳答案
您需要使用[names]
评估名称
当您在对象的属性声明中使用[]
表示法时,它会获取一个表达式并将该表达式的值设置为属性名称。因此,名称不仅仅是 names
,而是 names
下的内容。
var item = [
{ "max": "0.575", "ingredients": "a" },
{ "max": "10.25", "ingredients": "b" },
{ "max": "98.5", "ingredients": "c" }
];
var valuesForChart = {
data: []
};
item.forEach(function(subItem) {
var names = subItem.ingredients;
var level = subItem.max;
valuesForChart.data.push({
[names]: level
});
});
console.log(valuesForChart);
关于javascript - 使用 for 循环创建 json 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47974555/