当一个复选框被选中时,我将几个 id 添加到一个数组中。
<input type="checkbox" name="vehicle2" onClick={() => this.addEvcGroupToArray(item.stations.map((item, key) => { return (item.stationID) }))}
这是将id添加到数组的函数
addEvcGroupToArray(id) {
console.log("group_id ",id);
var stationId = {};
id.map((item, key) => {
stationId = {
stationId: item
}
})
var evcGroupIdArray = this.state.stationIdArray.concat(stationId);
this.setState({ stationIdArray: evcGroupIdArray })
}
例如console.log("group_id ",id);
输出一组ids,如["8"]
(这里只是一个id,但是这个可以是任意数量的 ID)。如果用户再次单击该复选框,我想防止添加相同的 ID。
我使用 Set
尝试过类似的操作。但它没有用。我该怎么做?
addEvcGroupToArray(id) {
console.log("group_id ",id);
var stationId = {};
id.map((item, key) => {
stationId = {
stationId: item
}
})
var evcGroupIdArray = this.state.stationIdArray.concat(stationId);
var uniqueArray = [...new Set(evcGroupIdArray)];
this.setState({ stationIdArray: uniqueArray })
}
最佳答案
首先初始化一个数组而不是像一个对象
let stationId = [];
在尝试添加这个而不是添加 id.map 之后
id.forEach(item => {
if (!this.state.stationIdArray.some(item => item === id)) {
stationId.push(item);
}
})
并设置状态
this.setState({ stationIdArray: [...stationIdArray, stationId] });
希望对你有帮助。
关于javascript - 从数组中删除重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59455569/