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;
}
});
});
我定义了一个数组,看起来像
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;
}
});
});