【问题标题】:javascript json : create new json using value of keysjavascript json : 使用键值创建新的 json
【发布时间】:2018-06-24 17:36:07
【问题描述】:

以下是我的意见

input= 

    [{
            "CalendarDate": "2019-10-01T00:00:00.000Z",
            "SLA": 0.01,
            "ContractBasedFlag": "Y",
            "name": "A"
        },
        {
            "CalendarDate": "2019-11-01T00:00:00.000Z",
            "SLA": 0.02,
            "ContractBasedFlag": "Y",
            "name": "B"
        },
        {
            "CalendarDate": "2019-12-01T00:00:00.000Z",
            "SLA": 0.03,
            "ContractBasedFlag": "Y",
            "name": "C"
        }
    ]

现在,如果我们查看这个输入,我需要通过拆分“CalendarDate”的值并使用“SLA”的整个值来创建一个新的 json。

output= 

    [{
        "201910": 0.01
    }, {
        "201911": 0.02
    }, {
        "201912": 0.03
    }]

我正在尝试在输入上使用 reduce() 函数来获取它,但仍然面临一些问题。

【问题讨论】:

  • 你试过简单的循环吗?
  • reduce 也或多或少类似于使用 for。它一次需要一个元素,然后我们可以处理该元素。
  • 你想要的输出完全没有意义。
  • @user3205921:当然,但是循环使它更明确,消除了一个复杂性。

标签: javascript arrays json typescript


【解决方案1】:

类似的东西

const ret = [{
    CalendarDate: '2019-10-01T00:00:00.000Z',
    SLA: 0.01,
    ContractBasedFlag: 'Y',
    name: 'A',
  },
  {
    CalendarDate: '2019-11-01T00:00:00.000Z',
    SLA: 0.02,
    ContractBasedFlag: 'Y',
    name: 'B',
  },
  {
    CalendarDate: '2019-12-01T00:00:00.000Z',
    SLA: 0.03,
    ContractBasedFlag: 'Y',
    name: 'C',
  }
].map(x => ({
  [`${x.CalendarDate.split('-')[0]}${x.CalendarDate.split('-')[1]}`]: x.SLA,
}));

console.log(ret);

【讨论】:

    【解决方案2】:

    您可以使用map 循环遍历数组。使用substring剪切字符串,使用replace替换字符串。

    var input = [{"CalendarDate":"2019-10-01T00:00:00.000Z","SLA":0.01,"ContractBasedFlag":"Y","name":"A"},{"CalendarDate":"2019-11-01T00:00:00.000Z","SLA":0.02,"ContractBasedFlag":"Y","name":"B"},{"CalendarDate":"2019-12-01T00:00:00.000Z","SLA":0.03,"ContractBasedFlag":"Y","name":"C"}];
    
    var result = input.map(o => ({[o.CalendarDate.substring(0, 7).replace("-", "")]: o.SLA}))
    
    console.log(result);

    文档:map()substring()replace()

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 2020-09-23
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多