Хоча більшість існуючих відповідей чудові, я хотів би включити відповідь, використовуючи традиційний для циклу, який також слід враховувати тут. ОП вимагає відповіді, яка сумісна з ES5 / ES6, і застосовується традиційна для циклу :)
Проблема використання функцій масиву в цьому сценарії полягає в тому, що вони не мутують об'єкти, але в цьому випадку мутація є обов'язковою умовою. Підвищення ефективності використання традиційного циклу - це просто (величезний) бонус.
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;
}
}
Хоча я є великим прихильником функцій масиву, не дозволяйте їм бути єдиним інструментом у вашій панелі інструментів. Якщо метою є мутація масиву, вони не найкраще підходять.
item
міститьid
ключ? чи Ви не заперечуєте, щоб ідентифікатор, а також усі властивостіitem
об’єкта в записі масиву?