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