如何将从div中收集的多个dataset Id值组成一个数组?
解决方法
先纠正你之前的两个问题:
- 循环得到多个独立数组,大概率是你在循环内部每次都新建了空数组(比如
for (xxx) { let ids = []; ids.push(...) }),导致每次循环都生成一个只包含当前元素id的数组,而非往同一个数组里追加。 - 用
Array.from()出错是因为你把单个元素的dataset.id(字符串)传进去了,Array.from()对字符串会按字符拆分,正确用法应该是把整个元素集合传进去。
下面是几种靠谱的实现方式:
方法1:forEach遍历收集
先选中所有目标div,初始化一个空数组,遍历的时候把每个div的dataset.id塞进去:
// 替换成你的类名 const targetDivs = document.querySelectorAll('.your-class'); const idArray = []; targetDivs.forEach(div => { // 可选:过滤掉没有dataset.id的元素 if (div.dataset.id) { idArray.push(div.dataset.id); } });
方法2:Array.from + 映射
利用Array.from()把NodeList转成数组的同时,直接映射提取id:
const idArray = Array.from(document.querySelectorAll('.your-class'), div => div.dataset.id); // 如果需要过滤空值: const idArray = Array.from(document.querySelectorAll('.your-class')) .map(div => div.dataset.id) .filter(id => id);
方法3:扩展运算符 + map
用扩展运算符把NodeList转成数组,再用map提取id:
const idArray = [...document.querySelectorAll('.your-class')].map(div => div.dataset.id);
这样就能得到一个包含所有div的dataset.id的统一数组了。
内容的提问来源于stack exchange,提问作者Uzor98
相关产品推荐
相关产品推荐

