gpt4 book ai didi

javascript - 检查数组的值是否存在于不同数组中的对象中

转载 作者:行者123 更新时间:2023-11-28 11:29:19 26 4
gpt4 key购买 nike

我想检查 array1 中的值是否存在于 array2 中的对象中。

数组1:

[2,5,1]

数组2:

[
{ value: 1, name: 'Monday', isSelected: false },
{ value: 2, name: 'Tuesday', isSelected: false },
{ value: 3, name: 'Wednesday', isSelected: false },
{ value: 4, name: 'Thursday', isSelected: false },
{ value: 5, name: 'Friday', isSelected: false },
]

我想要实现的是检查 array1 与名为 valuearray2 属性。如果 array2 中的对象值包含在 array1 中,则 isSelected 属性应更新为 true。我试过:

this.setState(prevState => ({
...prevState,
array2: prevState.array2.map(el => {
if (el.value === array2) {
return {
...el,
isSelected: !el.isSelected
}
}
return el;
})
}))

最佳答案

.map回调中,总是返回,并将isSelected属性设置为是否array1.includes(obj.value ),其中 obj 是您要迭代的对象:

const array1 = [2, 5, 1];
const array2 = [{
value: 1,
name: 'Monday',
isSelected: false
}, {
value: 2,
name: 'Tuesday',
isSelected: false
}, {
value: 3,
name: 'Wednesday',
isSelected: false
},
{
value: 4,
name: 'Thursday',
isSelected: false
}, {
value: 5,
name: 'Friday',
isSelected: false
},
];

const output = array2.map(obj => ({
...obj,
isSelected: array1.includes(obj.value)
}));
console.log(output);

尚不完全清楚,但如果 isSelected 属性可以以 true 开头,并且您希望保留它们,尽管数字不存在在 array1 中,更改为 isSelected: obj.selected || array1.includes(obj.value).

关于javascript - 检查数组的值是否存在于不同数组中的对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59352895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com