将section id name添加到数组中仅一次

Add section id name to array only once

本文关键字:一次 数组 id section name 添加      更新时间:2023-09-26

在页面上我有这些部分:

<section id="questions-688">
</section>
<section id="test">
</section>
<section id="stats-688">
</section>
<section id="answerswers-636">
</section>
<section id="someDiv">
</section>

我想用这些数字创建一个数组:[688,636]。因此,当section的id以问题或答案或统计数据开始时,我想将属于此id的数字添加到数组中,但只有一次。我如何通过javascript做到这一点?

这是一个创建数组[688,688,636]的函数,但我需要[688,636]。

var selector = 'section[id^=stats-],section[id^=answers-],section[id^=questions-]';
segments = Array.prototype.map.call(document.querySelectorAll(selector), function (section) {
  return section.id.split('-')[1]|0;
});

我该怎么做?

使用indexOf方法的简单for循环可以帮助您:

var sections = document.querySelectorAll('section[id^=stats-],section[id^=answers-],section[id^=questions-]'),
segments = [];
for (var i = 0; i < sections.length; i++) {
    var split = sections[i].id.split('-');
    if (segments.indexOf(split[1]) == -1) {
        segments.push(split[1]);
    }    
}
http://jsfiddle.net/6Fj6Z/

数组方法indexOf将返回该元素存在时找到的第一个索引,否则返回-1,否则返回该元素不存在。

var someArray = [688, 636];
if(!someArray.indexOf(688)) {
  someArray.push(688);
}