繁体   English   中英

js更改json对象的结构

[英]js change structure of an json object

我有一个这样的数组:

let array =  [
      {1: {
        "date": "2014-04-23 00:00:00",
        "volumetrie": "22458"
      }},
      {2: {
        "date": "2014-05-02 00:00:00",
        "volumetrie": "30585"
      }},
      {3: {
        "date": "2014-03-27 00:00:00",
        "volumetrie": "49536"
      }}
    ]

但我需要这样的:

let array =  [
      {
        "date": "2014-04-23 00:00:00",
        "volumetrie": "22458"
      },
      {
        "date": "2014-05-02 00:00:00",
        "volumetrie": "30585"
      },
      {
        "date": "2014-03-27 00:00:00",
        "volumetrie": "49536"
      }
    ]

我试图改变这个:

array.forEach(function(e){
          newData.push(e);
        });

但这不起作用。 不支持推送。

下一次尝试是:

let newData = {};
        array.forEach(function(e){
          newData = {...newData, ...e};
        });

没有成功。 任何想法如何获得结果?

您可以获得对象值的平面数组。

 let array = [{ 1: { date: "2014-04-23 00:00:00", volumetrie: "22458" } }, { 2: { date: "2014-05-02 00:00:00", volumetrie: "30585" } }, { 3: { date: "2014-03-27 00:00:00", volumetrie: "49536" } }], result = array.flatMap(Object.values); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

假设数组中的对象始终具有一个可枚举属性,您可以使用mapObject.values

array = array.map(obj => Object.values(obj)[0]);

现场示例:

 let array = [ {1: { "date": "2014-04-23 00:00:00", "volumetrie": "22458" }}, {2: { "date": "2014-05-02 00:00:00", "volumetrie": "30585" }}, {3: { "date": "2014-03-27 00:00:00", "volumetrie": "49536" }} ]; array = array.map(obj => Object.values(obj)[0]); console.log(array);
 .as-console-wrapper { max-height: 100% !important; }

但也请参阅Nina使用flatMap的解决方案,这很漂亮。

您可以简单地将数组中的每个项目映射到一个新项目,即原始项目的第一个键的值:

 let array = [ { 1: { "date": "2014-04-23 00:00:00", "volumetrie": "22458" }}, { 2: { "date": "2014-05-02 00:00:00", "volumetrie": "30585" }}, { 3: { "date": "2014-03-27 00:00:00", "volumetrie": "49536" }} ]; let formatted = array.map(v => { for (let k in v) return v[k]; }); console.log(formatted);

尝试这个:

const oldData = [
    {1: {
        "date": "2014-04-23 00:00:00",
        "volumetrie": "22458"
    }},
    {2: {
        "date": "2014-05-02 00:00:00",
        "volumetrie": "30585"
    }},
    {3: {
        "date": "2014-03-27 00:00:00",
        "volumetrie": "49536"
    }}
];
const newData = [];

for (let i = 0; i < oldData.length; i++) {
    newData[i] = oldData[i][i+1];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM