由它自己的子元素的一个替换的对象的元素

问题描述:

比方说,我有:由它自己的子元素的一个替换的对象的元素

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

我想结束了:

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

这工作:

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

但我有一种不好的感觉,改变价值是一个坏主意。

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

+0

有什么不对您的解决方案 – Shard

+0

使用的foreach而不是地图 –

您可以使用Array#forEach并原位更改对象,因为当您已经改变数组的原始对象时,无需返回新数组。

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

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

 
console.log(list);

+0

这将是更好?为什么? – MasterScrat

+1

没有建立一个新阵列,没有重新分配。 –

+0

@MasterScrat,看看这里的简短比较https://stackoverflow.com/questions/354909/is-there-a-difference-between-foreach-and-map –

它没有改变价值。

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

的地图()方法创建与主叫呼叫阵列中的每个元件上的 提供的函数的结果的新的数组。

要改变原有的值,可以使用forEach方法。