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循环,但我真的不知道将其放在哪里。

最佳答案

我会用类似的东西

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大。

09-25 16:28