如何从有序列表创建以序号为索引/键的数组或对象?
从HTML有序列表生成键为序号的对象
下面两种方法可以实现需求,把有序列表的序号作为对象键,列表项内容作为对应值:
方法1:遍历节点列表直接构建对象
先获取目标有序列表,再遍历其下的<li>元素,用索引+1作为键(对应有序列表的起始序号1),提取列表项的文本内容作为值:
const targetOl = document.querySelector('ol'); const listObj = {}; targetOl.querySelectorAll('li').forEach((listItem, idx) => { listObj[idx + 1] = listItem.textContent.trim(); }); console.log(listObj);
输出结果:
{"1": "First list item", "2": "Second list item", "3": "Third list item"}
方法2:用Array.from配合Object.fromEntries实现
如果想用Array.from处理,可以先将节点列表转为包含键值对的数组,再转成对象:
const listItems = document.querySelectorAll('ol li'); const listObj = Object.fromEntries( Array.from(listItems, (item, idx) => [idx + 1, item.textContent.trim()]) ); console.log(listObj);
这种方式里,Array.from的第二个参数是映射函数,直接生成[键, 值]格式的数组,再通过Object.fromEntries转换为目标对象。
注:
textContent.trim()用于去除文本前后的空白字符,如果不需要清理空白,直接用item.textContent即可。
内容的提问来源于stack exchange,提问作者pileup
相关产品推荐
相关产品推荐

