比方說,我有:由它自己的子元素的一個替換的對象的元素
let list = [{a: {b: 'foo'}}, {a: {b: 'bar'}}]
我想結束了:
list = [{a: 'foo'}, {a: 'bar'}]
這工作:
list = list.map(d => {d.a = d.a.b; return d})
但我有一種不好的感覺,改變價值是一個壞主意。
有沒有更清潔的方法?我的解決方案確實有效嗎?
比方說,我有:由它自己的子元素的一個替換的對象的元素
let list = [{a: {b: 'foo'}}, {a: {b: 'bar'}}]
我想結束了:
list = [{a: 'foo'}, {a: 'bar'}]
這工作:
list = list.map(d => {d.a = d.a.b; return d})
但我有一種不好的感覺,改變價值是一個壞主意。
有沒有更清潔的方法?我的解決方案確實有效嗎?
您可以使用Array#forEach
並原位更改對象,因爲當您已經改變數組的原始對象時,無需返回新數組。
let list = [{ a: { b: 'foo' } }, { a: { b: 'bar' } }];
list.forEach(d => d.a = d.a.b);
console.log(list);
這將是更好?爲什麼? – MasterScrat
沒有建立一個新陣列,沒有重新分配。 –
@MasterScrat,看看這裏的簡短比較https://stackoverflow.com/questions/354909/is-there-a-difference-between-foreach-and-map –
它沒有改變價值。
map
方法只通過爲數組中的每個項目應用callback
提供的函數創建一個新數組。
的地圖()方法創建與主叫呼叫陣列中的每個元件上的 提供的函數的結果的新的數組。
要改變原有的值,可以使用forEach
方法。
有什麼不對您的解決方案 – Shard
使用的foreach而不是地圖 –