Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Gán giá trị mới cho item trong mảng khớp điều kiện không dùng vòng lặp

Kết hợp filter() tìm object khớp điều kiện, sau đó map() để sửa đổi trực tiếp (mutate) object đó.

Ví dụ

const studentDetails = [
    {Name: "John"},
    {Name: "David"},
    {Name: "Bob"},
    {Name: "Mike"}
];

var targetName = "Bob";

// Tìm object có Name === "Bob" và đổi thành "Carol"
studentDetails
    .filter(obj => obj.Name === targetName)
    .map(obj => obj.Name = "Carol");

console.log(studentDetails);

Cách chạy

node demo.js

Kết quả

[
  { Name: 'John' },
  { Name: 'David' },
  { Name: 'Carol' },
  { Name: 'Mike' }
]

Lưu ý: Cách này **mutate** object gốc. Nếu muốn immutable, dùng map() tạo object mới:


const updated = studentDetails.map(obj => 
    obj.Name === targetName ? {...obj, Name: "Carol"} : obj
);