Javascript ES6 / ES5在數組中查找並更改


可以使用Filter

const list =[{id:0},{id:1},{id:2}];let listCopy =[...list];let filteredDataSource = listCopy.filter((item)=>{if(item.id ===1){ item.id =12345;}return item;}); console.log(filteredDataSource);

數組[對象{id:0},對象{id:12345},對象{id:2}]

一線使用傳播算子。

const updatedData = originalData.map(x =>(x.id === id ?{...x, updatedField:1}: x));

 

給定一個更改的對象和一個數組:

const item ={...}let items =[{id:2},{id:3},{id:4}];

通過遍歷數組,使用新對象更新數組:

items = items.map(x =>(x.id === item.id)? item : x)

 

盡管大多數現有答案都很不錯,但我想提供一個使用傳統for循環的答案,此處也應考慮。OP請求一個與ES5 / ES6兼容的答案,並且傳統的for循環適用:)

在這種情況下使用數組函數的問題在於,它們不會使對象發生突變,但是在這種情況下,必須進行突變。使用傳統的for循環所帶來的性能提升僅僅是(巨大)獎勵。

const findThis =2;const items =[{id:1,...},{id:2,...},{id:3,...}];for(let i =0, l = items.length; i < l;++i){if(items[i].id === findThis){ items[i].iAmChanged =true;break;}}

盡管我非常喜歡數組函數,但不要讓它們成為工具箱中的唯一工具。如果目的是使陣列變異,則它們不是最合適的。

 

 

 

 

可以使用Filter

const list =[{id:0},{id:1},{id:2}];let listCopy =[...list];let filteredDataSource = listCopy.filter((item)=>{if(item.id ===1){ item.id =12345;}return item;}); console.log(filteredDataSource);

數組[對象{id:0},對象{id:12345},對象{id:2}]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM