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循环,但我真的不知道将其放在哪里。 最佳答案
我会用类似的东西
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
大。