javascript - 将 NodeList 变成唯一数组不起作用
问题描述
我试图从 HTML 元素(placeDescription)中获取名称列表以从中生成下拉列表并且不需要重复项。所以我首先得到“bereiche”,它是一个节点列表,然后将其转换为数组,然后转换为集合。但它不工作重复仍然存在,我想知道为什么?有没有更简单的方法可以将我的节点列表放入没有重复的数组中?这应该很简单,但我现在尝试了几件事,但它们不起作用。javascript 是足够的 html 不会帮助我确定。
谢谢你。
var bereiche = document.querySelectorAll(".placeDescription889");
var berArr = Array.from(bereiche);
var setz = new Set(berArr);
let unique = Array.from(setz);
console.log(unique.length + "uniquelaenge");
解决方案
重复项仍然存在,因为列表中的每个节点都是唯一的。您正在创建一组节点,而不是一组名称。如果您只想要名称,请将节点列表映射到 innerText (或任何包含您要查找的文本的属性)并从中创建一个集合:
const berArr = Array.from(bereiche, (x) => x.innerText);
const unique = [...new Set(berArr)];
推荐阅读
- android - 单击主屏幕小部件
- php - 检查用户是否在地理围栏(位置边界)内
- javascript - JavaScript - 使用 Webpack 管理全局变量
- javascript - 正则表达式 - 搜索匹配特定字符串
- c# - 有没有比手动分配每个图像更有效的方法从资源文件夹中获取图像?
- php - 安装后的文件夹名称和 Joomla 组件链接
- python - 解码 JSON 字符串中的 UTF-8 编码
- sql-server - 带有 UNION 的 SQL Server 索引视图
- php - SQLSTATE[HY000] [2002] 参数无效(SQL:select * from information_sch ema.tables where table_schema = mamaput and table_name = migrations)
- css - react-jss 不缓存 css 类