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
相关产品推荐
相关产品推荐

