javascript - 最短的 JS 代码来获取给定标签的所有元素的 id

标签 javascript

我想将页面上 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/

相关文章:

javascript - AngularJS 如何将多个 JS 文件组合成一个文件?

javascript - NodeJS "readline"模块不输出提示

javascript - 一元函数链接器 javascript

javascript - 将 AngularJS 变量发送到新的弹出窗口

javascript - 如何从字符串中删除双引号,单引号以及如何传入ajax调用

javascript - 使用 Javascript 禁用 gridview 中的文本框

javascript - 在 Javascript 中测试硬件对 iPhone 3GS 设备方向事件的支持

javascript - 将可点击的按钮添加到电报机器人

javascript - 反向枚举二进制数位

javascript - 如果公会成员不在一个语音 channel 中,我可以将他们移动到一个语音 channel 吗?