首页 > 解决方案 > 将 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");

标签: javascript

解决方案


重复项仍然存在,因为列表中的每个节点都是唯一的。您正在创建一组节点,而不是一组名称。如果您只想要名称,请将节点列表映射到 innerText (或任何包含您要查找的文本的属性)并从中创建一个集合:

const berArr = Array.from(bereiche, (x) => x.innerText);
const unique = [...new Set(berArr)];

推荐阅读