【问题标题】:ES6: How to go through an array of object and change one of the items in there [closed]ES6:如何遍历对象数组并更改其中的一个项目[关闭]
【发布时间】:2019-02-02 18:05:47
【问题描述】:

我正在尝试将对象数组中的一项除以 1000 并返回具有计算值的新版本

0: {name: "Mon, 28", from: 10236, to: -0, time: "2019-01-28T18:51:04+01:00"}
1: {name: "Tue, 29", from: 10209, to: -0, time: "2019-01-29T18:51:03+01:00"}
2: {name: "Wed, 30", from: 12088, to: -0, time: "2019-01-30T18:51:01+01:00"}
3: {name: "Thu, 31", from: 10789, to: -0, time: "2019-01-31T18:50:59+01:00"}
4: {name: "Fri, 1", from: 11449, to: -0, time: "2019-02-01T18:50:56+01:00"}
5: {name: "Sat, 2", from: 13404, to: -0, time: "2019-02-02T18:50:48+01:00"}

const data2 = data.map(entry => {
        let rObj = {}
        rObj[entry.key] = entry.name
        rObj[entry.from] = entry.from / 1000
        rObj[entry.to] = entry.to
        rObj[entry.time] = entry.time
        return rObj
        // return entry.from
    })

我希望结果是这样的

0: {name: "Mon, 28", from: 10.236, to: -0, time: "2019-01-28T18:51:04+01:00"}
1: {name: "Tue, 29", from: 10.209, to: -0, time: "2019-01-29T18:51:03+01:00"}
2: {name: "Wed, 30", from: 12.088, to: -0, time: "2019-01-30T18:51:01+01:00"}
3: {name: "Thu, 31", from: 10.789, to: -0, time: "2019-01-31T18:50:59+01:00"}
4: {name: "Fri, 1", from: 11.449, to: -0, time: "2019-02-01T18:50:56+01:00"}
5: {name: "Sat, 2", from: 13.404, to: -0, time: "2019-02-02T18:50:48+01:00"}

任何帮助将不胜感激。

【问题讨论】:

  • 请发布您尝试过但不起作用的代码,以及预期的输出。
  • 真的不清楚你在问什么。将此数组中的一项除以 10 是什么意思?也许您想将数组中每个项目的属性除以 10?
  • 我需要将 from 元素除以 1000,并返回与除值相同的对象数组
  • 请发布实际的对象数组,以便我们轻松剪切和粘贴并使用它。无论如何,这是 mapforEach 的工作,不需要 ES6/ES7
  • const data2 = data.map(entry => ({...entry, from: (entry.from / 1000)}))

标签: javascript ecmascript-6 ecmascript-2016


【解决方案1】:

您可以使用arraysmap() 方法实现此目的。如果您将0,1,2... 用作keys,我建议您改用array。下面是数组的例子

const arr = [{name: "Mon, 28", from: 10236, to: -0, time: "2019-01-28T18:51:04+01:00"},
{name: "Tue, 29", from: 10.209, to: -0, time: "2019-01-29T18:51:03+01:00"},
{name: "Wed, 30", from: 12.088, to: -0, time: "2019-01-30T18:51:01+01:00"},
{name: "Thu, 31", from: 10.789, to: -0, time: "2019-01-31T18:50:59+01:00"},
{name: "Fri, 1", from: 11.449, to: -0, time: "2019-02-01T18:50:56+01:00"},
{name: "Sat, 2", from: 13.404, to: -0, time: "2019-02-02T18:50:48+01:00"}]

const newArr = arr.map(item => ({...item,from:item.from/1000}))
console.log(newArr)

【讨论】:

    【解决方案2】:

    您可以使用mapdestructing assignment

    let obj = [{name: "Mon, 28", from: 10236, to: -0, time: "2019-01-28T18:51:04+01:00"},{name: "Tue, 29", from: 10209, to: -0, time: "2019-01-29T18:51:03+01:00"},{name: "Wed, 30", from: 12088, to: -0, time: "2019-01-30T18:51:01+01:00"},{name: "Thu, 31", from: 10789, to: -0, time: "2019-01-31T18:50:59+01:00"},{name: "Fri, 1", from: 11449, to: -0, time: "2019-02-01T18:50:56+01:00"},{name: "Sat, 2", from: 13404, to: -0, time: "2019-02-02T18:50:48+01:00"}]
    
    const op = obj.map(e=>({...e, from: e.from/1000}))
    
    console.log(op)

    【讨论】:

      【解决方案3】:

      你快到了,你只需要修改 from 键并保持一切原样。析构运算符{...entry} 会将所有属性从当前元素复制到将在map 函数中处理的元素。然后我只会通过将from 键除以 1000 来更改它。

      const data =  [{name: "Mon, 28", from: 10236, to: -0, time: "2019-01-28T18:51:04+01:00"},{name: "Tue, 29", from: 10209, to: -0, time: "2019-01-29T18:51:03+01:00"},{name: "Wed, 30", from: 12088, to: -0, time: "2019-01-30T18:51:01+01:00"},{name: "Thu, 31", from: 10789, to: -0, time: "2019-01-31T18:50:59+01:00"},{name: "Fri, 1", from: 11449, to: -0, time: "2019-02-01T18:50:56+01:00"},{name: "Sat, 2", from: 13404, to: -0, time: "2019-02-02T18:50:48+01:00"}]
      const data2 = data.map(entry => {
              const rObj = {...entry}
              rObj['from'] = entry['from']/1000;
              return rObj;          
          })
      console.log(data2);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-04
        • 2021-03-23
        • 2021-12-15
        相关资源
        最近更新 更多