【问题标题】:Replace an element of an object by one of its own sub-elements将对象的元素替换为其自己的子元素之一
【发布时间】:2018-01-26 00:11:09
【问题描述】:

假设我有:

let list = [{a: {b: 'foo'}}, {a: {b: 'bar'}}]

我想结束:

list = [{a: 'foo'}, {a: 'bar'}]

这行得通:

list = list.map(d => {d.a = d.a.b; return d})

但我有一种不好的感觉,即更改原值是一个坏主意。

有没有更清洁的方法?我的解决方案真的有效吗?

【问题讨论】:

  • 你的解决方案没有问题
  • 使用 forEach 代替 map

标签: javascript dictionary enumeration


【解决方案1】:

您可以使用Array#forEach 并就地更改对象,因为您不需要返回新数组,而您已经改变了数组的原始对象。

let list = [{ a: { b: 'foo' } }, { a: { b: 'bar' } }];

list.forEach(d => d.a = d.a.b);

console.log(list);

【讨论】:

【解决方案2】:

它没有改变原值。

map 方法仅通过为数组中的每个项目应用callback 提供的函数来创建一个新数组。

map() 方法使用调用的结果创建一个新数组 在调用数组中的每个元素上提供函数。

要更改适当的值,您可以使用forEach 方法。

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2022-01-15
    相关资源
    最近更新 更多