Trong khi hầu hết các câu trả lời hiện có là tuyệt vời, tôi muốn bao gồm một câu trả lời bằng cách sử dụng vòng lặp for truyền thống, cũng cần được xem xét ở đây. OP yêu cầu một câu trả lời tương thích ES5 / ES6 và vòng lặp for truyền thống được áp dụng :)
Vấn đề với việc sử dụng các hàm mảng trong kịch bản này là chúng không làm biến đổi các đối tượng, nhưng trong trường hợp này, đột biến là một yêu cầu. Hiệu suất đạt được khi sử dụng vòng lặp truyền thống chỉ là phần thưởng (rất lớn).
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;
}
}
Mặc dù tôi là một fan hâm mộ lớn của các hàm mảng, nhưng đừng để chúng là công cụ duy nhất trong hộp công cụ của bạn. Nếu mục đích là làm thay đổi mảng, chúng không phù hợp nhất.
item
có chứa mộtid
khóa? hoặc bạn có nhớ có id cũng như tất cả các thuộc tính từitem
đối tượng trong mục nhập mảng không?