You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript:如何向数组添加不重复元素?附当前实现代码

JavaScript数组避免添加重复元素的几种方法

方法1:用Array.includes()判断后再添加

在向数组push元素前,先检查目标元素是否已存在,仅当不存在时才执行添加操作,修改你的代码如下:

const booked_hours = [];
for (let i = 0; i < apptid_set.size; i++) {
    const book_hours = [...book_times][i].split(" ");
    const hour = book_hours[2];
    // 检查元素未包含在数组中再添加
    if (!booked_hours.includes(hour)) {
        booked_hours.push(hour);
    }
}

方法2:利用Set自动去重(更简洁)

Set数据结构本身不允许存储重复值,可先将所有元素存入Set,再转换为数组,适合批量处理场景:

分步写法更清晰:

const hourSet = new Set();
for (let i = 0; i < apptid_set.size; i++) {
    const book_hours = [...book_times][i].split(" ");
    hourSet.add(book_hours[2]); // Set自动忽略重复元素
}
const booked_hours = [...hourSet]; // 转换为数组

也可以用简化写法:

const booked_hours = [...new Set(
    Array.from({length: apptid_set.size}, (_, i) => {
        const book_hours = [...book_times][i].split(" ");
        return book_hours[2];
    })
)];

方法3:用Array.indexOf()判断(兼容旧环境)

如果需要兼容不支持includes()的旧版JavaScript环境,可以用indexOf()判断元素是否存在:

const booked_hours = [];
for (let i = 0; i < apptid_set.size; i++) {
    const book_hours = [...book_times][i].split(" ");
    const hour = book_hours[2];
    // 索引为-1表示元素不存在
    if (booked_hours.indexOf(hour) === -1) {
        booked_hours.push(hour);
    }
}

内容的提问来源于stack exchange,提问作者Dani Misi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:15:58