仅将数组ID名称添加到数组一次

时间:2014-05-10 10:41:30

标签: javascript html

在页面中我有以下部分:

<section id="questions-688">
</section>

<section id="test">
</section>

<section id="stats-688">
</section>

<section id="answers-636">
</section>

<section id="someDiv">
</section>

我想用这些数字创建一个数组:[688,636]。因此,当部分的id以问题或答案或统计数据开始时,我想将数字属于此ID添加到数组中,但仅限ONCE。我怎么能通过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;
});

我该怎么做?

2 个答案:

答案 0 :(得分:1)

使用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/

答案 1 :(得分:0)

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

var someArray = [688, 636];

if(!someArray.indexOf(688)) {
  someArray.push(688);
}