javascript - 使用 for 循环创建 json 感到困惑

标签 javascript json

我试图通过循环获得的数据来创建一个 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/

相关文章:

javascript - 来自 Alfresco 的 json 多维数组

python - Python中输出json txt名称

javascript - 快速点击时未调用 AJAX 请求

javascript - 如何在向下滚动到达另一个元素时隐藏一个元素?

javascript - core-ui-select 重写 URL 后不起作用

javascript - D3.js v5 方案类别库未定义

java - 返回空 JSON 的 Jersey Web 服务

javascript - 如何正确防范 JavaScript 的恶意输入?

python - 如何使用 Python 正确提供 json 数据?

java - 对 JSON 对象使用 group-by 类型的操作