最近在項目終于到一個問題,比如我現(xiàn)在要遍歷一個數(shù)組备闲,數(shù)組里面是多個對象,像這個樣子
var arr = [{id:1,text:1},{id:2,text:2}],當然后面還有很多個這樣的對象粟判,我們現(xiàn)在要往里面添加對象蜡坊,添加的規(guī)則是:
1.當數(shù)組中有id相同的對象,覆蓋此對象翅阵;s
2.當數(shù)組中沒有id相同的對象歪玲,在數(shù)組中插入對象;
使用angular的童鞋都會想到掷匠,使用angular-foreach遍歷數(shù)組中的每一個對象滥崩。對比每一項的id,如果id相同則覆蓋讹语,id不同則添加钙皮,于是有了如下代碼:
如果傳入數(shù)據(jù),我們可以看到顽决,一個數(shù)據(jù)還好說短条,多個數(shù)據(jù)它會添加多次。擎值。著是怎么回事慌烧。逐抑。哦鸠儿!原來是我把return寫在外層了!這樣每次都會進行比對厕氨,這樣當然不行啦进每!于是咱們有了升級版:
好了,現(xiàn)在可以信心滿滿的傳入數(shù)據(jù)了命斧,只要滿足了條件田晚,我就給你return了,這次數(shù)據(jù)該對了吧国葬!當然現(xiàn)實還是打臉了贤徒,為什么我return不了G酆尽!這就是angular-foreach的一個坑啦接奈!它必須比對完所有的數(shù)據(jù)之后才會退出踢涌,如果你里面寫了兩個判斷條件,那么恭喜你序宦,入坑了睁壁,兩個條件不管如何都會進入一個,當然不會得到我們想要的結果啦互捌!那我們應該怎么改造潘明?經過一番改造,我們有了如下函數(shù):
這樣子就能取到我們想要的東西咯秕噪!