比较两个数组,如果id相等,则禁用元素

时间:2019-10-24 11:18:18

标签: javascript arrays reactjs ecmascript-6

我在状态中有两个数组,并且都有ID。

arrOne = [2,6,8]
arrTwo = [3, 8, 4]

如果某个数组具有相同的值(在这种情况下为8),我想禁用所有具有该相等值的按钮。

我尝试过这种方法,但我没有得到它

button = () => {
const checkId = this.state.arrOne.filter(arr => arr.includes(this.state.arrTwo.map(data => data.id))


if(checkedId){
return <Button disable />
} 

return <Button />
}
render(){
this.button()
}

我有所有数组的按钮,如果数组一等于数组二,我想禁用这个等于的特定按钮 有什么想法吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

这应该有帮助。

const isDisabled = this.state.arrOne.some(item => this.state.arrTwo.includes(item));

return <Button disabled={isDisabled} />;

答案 1 :(得分:0)

找到数组的交集并进行逻辑

var setOne = [2,6,8];
var setTwo = [3, 8, 4]

var hasDuplicateValues = [...new Set(setOne)].filter(item => setTwo.includes(item));

if(hasDuplicateValues.length > 0) {
    // Disable button
}
else {
    // Enable button
}