在对象数组上使用 foreach inside map 仅更改最后一条记录

using foreach inside map on array of object only changing the last record

我正在尝试在 .map 中使用 forEach 来根据 [=15] 更改 checkedState 变量中的所有 isChecked 属性 =] 变量。但不知何故它只改变了最后一行。我究竟做错了什么?任何帮助表示赞赏

这是我的代码

const listHari = [
  { nama: "senin", nomor: 1, isChecked: false },
  { nama: "selasa", nomor: 2, isChecked: false },
  { nama: "rabu", nomor: 3, isChecked: false },
  { nama: "kamis", nomor: 4, isChecked: false },
  { nama: "jumat", nomor: 5, isChecked: false },
  { nama: "sabtu", nomor: 6, isChecked: false },
  { nama: "minggu", nomor: 7, isChecked: false },
];

const AddRute = () => {
  const [checkedState, setCheckedState] = useState(listHari);

  const getRuteById = async () => {
    const data = [
      {id: "2", nama: "selasa", hari: "2"}, 
      {id: "4", nama: "kamis", hari: "4"}, 
      {id: "5", nama: "jumat", hari: "5"}
    ];

    const tmp1 = checkedState.map((item, index) => {
      console.log("index", index);

      data.forEach(function (row) {
        const rowHari = row.hari - 1;
        if (index === rowHari) {
          item.isChecked = true;
        } else {
          item.isChecked = false;
        }
        console.log("hari", rowHari, item.isChecked);
        // console.log('ischecked', item.isChecked);
      });

      return item;
    });
    console.log("temp", tmp1); // ==> in tmp1, only the 5th item has isChecked true
  }
}

删除其他部分:

else {
  item.isChecked = false;
}

这是检查 listHari 中所需元素的另一种方法:

const listHari = [
  { nama: "senin", nomor: 1, isChecked: false },
  { nama: "selasa", nomor: 2, isChecked: false },
  { nama: "rabu", nomor: 3, isChecked: false },
  { nama: "kamis", nomor: 4, isChecked: false },
  { nama: "jumat", nomor: 5, isChecked: false },
  { nama: "sabtu", nomor: 6, isChecked: false },
  { nama: "minggu", nomor: 7, isChecked: false } ], 
 data = [
  { id: "2", nama: "selasa", hari: "2"}, 
  { id: "4", nama: "kamis", hari: "4"}, 
  { id: "5", nama: "jumat", hari: "5"}
 ];
 
 listHari.forEach(lh=>data.some(d=>lh.isChecked=d.id==lh.nomor));
 
 console.log(listHari);