2 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個贊
補(bǔ)充下,剛才沒仔細(xì)看題目。題目的map方法不夠“純粹”,實(shí)際上還是直接修改了每個item的屬性,要想不影響原有對象,應(yīng)該這么寫:
arr = arr.map((item) => { // 有同事指出應(yīng)該聲明一個新變量來存儲map的結(jié)果,這個建議我認(rèn)為是對的。
return {
...item,
a:3
}
});
==============
map方法體現(xiàn)的是數(shù)據(jù)不可變的思想。該思想認(rèn)為所有的數(shù)據(jù)都是不能改變的,只能通過生成新的數(shù)據(jù)來達(dá)到修改的目的,因此直接對數(shù)組元素或?qū)ο髮傩赃M(jìn)行操作的行為都是不可取的。這種思想其實(shí)有很多好處,最直接的就是避免了數(shù)據(jù)的隱式修改。immutable.js是實(shí)現(xiàn)數(shù)據(jù)不可變的一個庫,可通過專屬的API對引用類型進(jìn)行操作,每次形成一個新的對象。
但具體到項目中還是要看團(tuán)隊的要求,都用或者都不用。單單局部使用是沒有效果的。
如果使用了React + Redux 的技術(shù)棧,是比較推薦使用的
另外有一點(diǎn),forEach和map還存在一個編程思想的區(qū)別,前者是命令式編程,后者是聲明式編程,如果項目的風(fēng)格是聲明式的,比如React,那么后者顯然更統(tǒng)一。
添加回答
舉報