javascript - 从数组中删除重复值

标签 javascript arrays reactjs

当一个复选框被选中时,我将几个 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/

相关文章:

javascript - D3 从堆叠条形图到条形图的转换仅在第一次有效

Javascript 在新选项卡中输入 key 打开页面

javascript - jQuery param 动态对象名称

android - 滑动手势在 Android 上不起作用

javascript - 在 Blazor 中从 appsettings.json 获取设置到 afterStarted(options) | Blazor 服务器

php - PHP 的 array() 的缩写

c - 在 C 中获取二维数组的输入

javascript - 在对象中找不到空数组值

unit-testing - Redux 如何在单元测试中更新存储?

css - 背景大于 Circle Div CSS 的问题