【问题标题】:Change JSON to following format in JS在JS中将JSON更改为以下格式
【发布时间】:2018-08-22 05:52:31
【问题描述】:

如何在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}

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

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 是的,我做到了,我可以得到这种格式。 {2018-04-01T22:50:30.912Z:-0.033455},{2018-04-01T22:50:30.912Z:-0.033455},{2018-04-01T22:50:30.912Z:-0.033455}
  • 如果你想要答案我可以告诉你:var obj = {};for(d of data) obj[d.acquired] = d.mean_ndvi;,但是这个问题你最好自己尝试一下。
  • 请添加此特定问题的解决方案。我被困在这里很长时间了。我已经尝试了很多。
  • 使用简单的数组迭代,获取每一项的值,然后设置为你想要的对象。尝试给这个问题一个解决方案并尝试解决它。如果您在尝试求解时阻止,我们很乐意为您提供帮助。

标签: javascript arrays json


【解决方案1】:

您可以按如下方式使用reduce()(混入一些destructuringspreading):

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

完整的sn-p:

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);

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 1970-01-01
    • 2014-05-03
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多