检索唯一元素的索引号

时间:2015-04-11 23:29:26

标签: javascript arrays indexof

for (let i = 0; i < arrayItemsLen; i++) {
  let uniqueItems = arrayItems.filter(function(item, i, arrayItems) {
    return i == arrayItems.indexOf(item);
  });
}

此方法检索arrayItemsuniqueItems数组中的唯一项。我想要做的是获取每个唯一元素的索引号并将其分配给另一个临时数组。我无法找到实现这一目标的方法。

例如:arrayItems.indexOf(item)给出每个唯一元素的索引,但是,如何获得tempArray[i]的索引,我想我需要一个for循环,但我真的不喜欢知道把它放在哪里。

1 个答案:

答案 0 :(得分:1)

我会使用像

这样的东西
var uniqueIndices = [],
    uniqueValues = [];
for(var i=0; i<array.length; ++i) {
    if(uniqueValues.indexOf(array[i]) >= 0) continue;
    uniqueIndices.push(i);
    uniqueValues.push(array[i]);
}

基本上,它会迭代array检查当前值是否已经在uniqueValues中。如果它在那里,它什么都不做,并继续下一次迭代。否则,它会将值添加到uniqueValues并将密钥添加到uniqueIndices

在问题中使用i == array.indexOf(array[i])也可以,但速度可能会慢一些,因为array会大于uniqueValues