我想将页面上 foobar
元素的所有 id 收集到一个以逗号分隔的字符串中。例如:
<div>
<foobar id="456"></foobar>
<foobar id="aaa"></foobar>
<foobar id="987"></foobar>
<div>
应该给出“456,aaa,987”
如果重要的话,foobar
元素永远不会嵌套。
我当前的解决方案是
[].slice.call(document.getElementsByTagName("foobar")).map(function(a){return a.id}).join(","))
有没有办法在纯 JS 中使用更短的(压缩后)语句来做到这一点?
编辑:在 ES5(又名“普通”javascript)中
编辑 2:我能够通过以下方式删除一些字符:
[].map.call(document.getElementsByTagName("foobar"),function(a){return a.id}).join();
最佳答案
对于 ES5,我相信没有太多可以做的事情,但是请注意,join
函数的默认参数值是“,”,因此您可以跳过它,它最终会像这样:
[].slice.call(document.getElementsByTagName("foobar")).map(function(a){return a.id}).join()
<小时/>
使用 ES6,您可以使用 Array.from 将类似数组转换为数组,也可以使用 lambda 表达式来进一步缩短它。
所以最终会是这样的:
Array.from(document.getElementsByTagName("div")).map(a => a.id).join()
关于javascript - 最短的 JS 代码来获取给定标签的所有元素的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40117800/