React.: 设置字段数组的值

React.: Set Value of field array

我定义了一个数组,看起来像

 const [weekDays, setWeekDays] = useState({
        a: [
            { id: 1, weekDay: 'MONDAY', isChecked: false },
            { id: 2, weekDay: 'TUESDAY', isChecked: false },
            { id: 3, weekDay: 'WEDNESDAY', isChecked: false },
            { id: 4, weekDay: 'THURSDAY', isChecked: false },
            { id: 5, weekDay: 'FRIDAY', isChecked: false },
            { id: 6, weekDay: 'SATURDAY', isChecked: false },
            { id: 7,  weekDay: 'SUNDAY', isChecked: false },
        ]
    });

另一个看起来像

的数组
const [array, setArray] = useState([{"id":2,"messageId":1,"weekDay":"Tuesday"}])

现在我想比较数组,如果工作日存在于另一个数组中,则将一个数组字段的 isChecked 值设置为真。所以我想要这样的东西:

weekDays.a.map(weekDay => {
            array.map(row => {
                if (row.weekDay === weekDay.weekDay) {
                    setWeekDays([weekDay.isChecked = true])}
            })
        })

但是我收到错误无法读取未定义的 属性 映射 weekDays.a.map

如何正确完成setter?

主要问题是您正在比较两个不同的字符串。我已经使用 toUpperCase() 方法将字符串“Tuesday”的所有小写字符转换为大写,以便可以应用条件。

我已经根据应用条件使用索引号将isChecked的值更改为true。

weekDays.a.map((weekDay, indexWeek) => {
array.map((row) => {
  if (weekDay.weekDay == row.weekDay.toUpperCase()) {
    console.log(weekDay, indexWeek);
    weekDays.a[indexWeek].isChecked = true;
  }
 });
});