JavaScript 如何查找列表中的重复值?附错误代码求解决方案
报错原因
- 初始化错误:你第一行将
names赋值为字符串类型的innerText结果,字符串不存在push方法,调用时会直接触发类型错误。 - 运算符使用错误:
in运算符用于判断属性名/索引是否存在于对象/数组中,无法判断某个值是否为数组的元素。
可行修复方案
基础修复版(兼容旧浏览器)
// 初始化names为数组,存入第一个元素的文本值 let names = [itemList[0].getElementsByTagName("span")[0].innerText]; // 循环变量用let声明避免全局污染 for (let i = 1; i < itemList.length; i++) { const currentText = itemList[i].getElementsByTagName("span")[0].innerText; // 用includes判断值是否已存在于数组中 if (!names.includes(currentText)) { names.push(currentText); } }
简洁优化版
利用Set自动去重的特性,可以大幅简化代码:
const names = [...new Set( Array.from(itemList).map(item => item.getElementsByTagName("span")[0].innerText) )];
补充注意点
如果itemList可能为空,建议在开头加非空判断,避免读取itemList[0]时报错:
if (itemList.length === 0) { const names = []; // 后续逻辑 }
内容的提问来源于stack exchange,提问作者netanel shteren
相关产品推荐
相关产品推荐

