检索唯一元素的索引数
Retrieve Index Number of Unique Elements
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
。
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
。