【问题标题】:create JSON object starting from another JSON Object从另一个 JSON 对象开始创建 JSON 对象
【发布时间】:2019-06-18 18:32:11
【问题描述】:

我正在尝试将我的 API 配置为适合 Chart.js

我的 API 包含

{
    "Food": 900,
    "Shopping": 0,
    "Travel": 600,
    "Health": 0
}

应该是这样的

[
    {
      data:900,
      label: 'Food'
    },

    {
      data: 0,
      label: 'Shopping'
    },

    {
      data: 600,
      label: 'Travel'
    },
    {
      data: 0,
      label: 'Health'
    }
];

【问题讨论】:

  • 你尝试了什么?

标签: javascript arrays json object ecmascript-6


【解决方案1】:

使用Object.Keys(yourObjectHere) 获取对象键的数组 然后,您可以遍历此数组并使用键来访问为对象中每个键存储的值。在同一迭代期间,您可以添加到新对象。 例如:

var keys = Object.Keys(yourObjectHere)
for(var i = 0; i < keys.length; i++){
    var value = yourObjectHere[keys[i]];
    //add value and keys[i] to your new object
}

【讨论】:

    【解决方案2】:

    当然,只需遍历 Object.entriespush 每个道具和标签到一个数组:

    const data = { "Food": 900, "Shopping": 0, "Travel": 600, "Health": 0 };
    let result = [];
    Object.entries(data).forEach(prop => result.push({
      "data": prop[1],
      "label": prop[0]
    }));
    
    console.log(result);

    【讨论】:

    • 请解释@AymanSafi - 我不明白你的意思。你能编辑你的问题吗?您描述的这个 JSON 对象的示例是什么?
    【解决方案3】:

    我认为这会有所帮助

    let origin = { "Food": 900, "Shopping": 0, "Travel": 600, "Health": 0 };
    
    let newObject = Object.entries(origin).reduce((obj, item) => {
      obj.push({
        "label": item[0],
        "data": item[1]
      });
     return obj;
    }, [])
    
    console.log(newObject)

    您可以观看此video,以更好地了解 reduce 的工作原理。祝你好运!

    【讨论】:

      【解决方案4】:

      也可以使用Object.keys 来实现。 这是一个例子

      您可以在此处查看Object.Keys 文档 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

      var data = { "Food": 900, "Shopping": 0, "Travel": 600, "Health": 0 };
      let result = [];
      Object.keys(data).forEach(prop => 
      result.push({
      data: data[prop],
      label: prop
      }));
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 2021-12-18
        • 2018-09-22
        • 2012-08-29
        • 2021-12-24
        相关资源
        最近更新 更多