首页 > 解决方案 > 在JS中将JSON更改为以下格式

问题描述

如何在javascript中更改以下格式的JSON

data = [{acquired: "2018-03-09T22:49:52.935Z", mean_ndvi: -0.0483685}
{acquired: "2018-02-13T22:49:16.568Z", mean_ndvi: 0.00595065}
{acquired: "2018-04-01T22:50:30.912Z", mean_ndvi: -0.033455}]

准确地

data = {"2018-03-09T22:49:52.935Z":-0.0483685, "2018-02-13T22:49:16.568Z": 0.00595065, "2018-04-01T22:50:30.912Z": -0.033455}

我的尝试。

var json =data; var obj2 ={}; var obj3 =[]; 
for(var i = 0; i < json.length; i++) 
{ var obj = json[i]; 
obj2 = {[obj.acquired]:obj.mean_ndvi};
obj3.push(obj2); } 
console.log(obj3);

我能够以以下格式获取它。

 {2018-04-01T22:50:30.912Z: -0.033455}, 
 {2018-04-01T22:50:30.912Z: -0.033455}, 
 {2018-04-01T22:50:30.912Z: -0.033455}

请检查可以进行哪些更改以在一行中获得结果。

标签: javascriptarraysjson

解决方案


您可以reduce()按如下方式使用(混入一些解构传播):

data.reduce((a, {acquired, mean_ndvi}) => ({[acquired]: mean_ndvi, ...a}), {});

完整片段:

const data = [
    {acquired: "2018-03-09T22:49:52.935Z", mean_ndvi: -0.0483685},
    {acquired: "2018-02-13T22:49:16.568Z", mean_ndvi: 0.00595065},
    {acquired: "2018-04-01T22:50:30.912Z", mean_ndvi: -0.033455}
];

const result = data.reduce((a, {acquired, mean_ndvi}) => ({[acquired]: mean_ndvi, ...a}), {});

console.log(result);


推荐阅读