JavaScript:转换对象结构 [英] JavaScript: Convert object structure

查看:43
本文介绍了JavaScript:转换对象结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个这样的对象:

{
  "A": [ "-4927","8779","-9971","-23767" ],
  "B": [ "-10617","-1456","3131","259" ],
  "C": [ "-5185","1168","21501","18989" ],
  "D": [ "2010","5664","2148","-674" ]
}

我要转换为此:

[
  {
    name: 'A',
    data: ["-4927","8779","-9971","-23767"]
  }, {
    name: 'B',
    data: ["-10617","-1456","3131","259"]
  }, {
    name: 'C',
    data: ["-5185","1168","21501","18989"]
  }, {
    name: 'D',
    data: ["2010","5664","2148","-674"]
  }
]

我使用了以下方法:

var newData = [];
$.each($.parseJSON(data), function(k, v) {
  newData['name'] = k;
  newData['data'] = v;
});

但是它仅将最后一个密钥对值存储为newData.那是

But it only store the last key pair value as newData. That is

name: 'D',
data: ["2010","5664","2148","-674"]

我知道它会覆盖先前的数据,并且仅存储所获取的最后数据.但是我无法解决这个问题.

I understand that it overwrite the previous data and store only the last data it get. But i can't solve this problem.

有帮助吗?

推荐答案

您正在直接将属性namedata分配给newData,而不是将对象作为数组推送到其中:

You are assigning the properties name and data directly to newData instead of pushing an object into it as an array:

将循环更改为此:

var newData = [];
$.each($.parseJSON(data), function(k, v) {
        const myNewData = {
            name: k,
            data: v
        }
        newData.push(myNewData);
});

这篇关于JavaScript:转换对象结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆