簡體   English   中英

從數組中刪除最后添加的值而不改變它

[英]Remove last added value from array without mutating it

dontMutateMeArray=[1,2,3,3,3,4,5];
toBeRemoved=3;

newArray=dontMutateMeArray.something(toBeRemoved);          // [1,2,3,3,4,5]  
iDontWantArray=dontMutateMeArray.filter(value=>value===toBeRemoved);  // [1,2,4,5]

我確實也需要它來處理對象數組。 而且我特別需要刪除最后添加的對象(即數組中索引較高的對象 就像是:

dontMutateMeArray=[{id:1},{id:2},{id:3,sth:1},{id:3,sth:42},{id:3,sth:5},{id:4},{id:5}];
toBeRemoved=3;

newArray=dontMutateMeArray.something(toBeRemoved);          // [{id:1},{id:2},{id:3,sth:1},{id:3,sth:42},{id:4},{id:5}]  
iDontWantArray=dontMutateMeArray.filter(obj=>obj.id===toBeRemoved);  // [{id:1},{id:2},{id:4},{id:5}]
iDontWantArray2=dontMutateMeArray.blahBlah(toBeRemoved);    // [{id:1},{id:2},{id:3,sth:1},{id:3,sth:5},{id:4},{id:5}]

您可以從右側迭代並檢查閉包。

 var dontMutateMeArray = [{ id: 1 }, { id: 2 }, { id: 3, sth: 1 }, { id: 3, sth: 42 }, { id: 3, sth: 5 }, { id: 4 }, { id: 5 }], toBeRemoved = 3, newArray = dontMutateMeArray.reduceRight((found => (r, a) => (!found && a.id === toBeRemoved ? found = true : r.unshift(a), r))(false), []); console.log(newArray);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM