for (let i = 0; i < arrayItemsLen; i++) {
let uniqueItems = arrayItems.filter(function(item, i, arrayItems) {
return i == arrayItems.indexOf(item);
});
}
此方法检索arrayItems
到uniqueItems
数组中的唯一项。我想要做的是获取每个唯一元素的索引号并将其分配给另一个临时数组。我无法找到实现这一目标的方法。
例如:arrayItems.indexOf(item)
给出每个唯一元素的索引,但是,如何获得tempArray[i]
的索引,我想我需要一个for循环,但我真的不喜欢知道把它放在哪里。
答案 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
。