我还不能发表评论,但想对 Maheers 的回答发表评论,如果您将所有数组条目更改为“偶数”,它会返回 0 而不是 -1,因为您要添加一个。
最好更新一下:
function findIndexOfUnique(arr){
let uniqueIndex = arr.findIndex(x => arr.indexOf(x) === arr.lastIndexOf(x));
if (uniqueIndex >= 0) uniqueIndex++;
return uniqueIndex;
}
console.log(findIndexOfUnique([ 'even', 'even', 'odd', 'even', 'even' ])) // 3
console.log(findIndexOfUnique([ 'even', 'even', 'even', 'even', 'even' ])) // -1
但是,如果有多个唯一条目怎么办?在这种情况下,它只会返回第一个唯一条目。示例:
[ 'even', 'even', 'even', 'odd', 'even', 'three', 'even' ]
它应该返回 [ 4, 6 ] 吗?
function findUniqueIndexes(arr) {
let uniqueIndexes = [];
for (let index = 0; index < arr.length; index++) {
if (index === arr.lastIndexOf(arr[index]))
uniqueIndexes.push(index + 1);
}
}
return uniqueIndexes
}
如果你想进一步扩展:
function findUniqueIndexes(arr) {
let uniqueIndexes = [];
for (let index = 0; index < arr.length; index++) {
if (index === arr.lastIndexOf(arr[index]))
uniqueIndexes.push({"index" : index + 1, value: arr[index]});
}
}
return uniqueIndexes
}
最后一个会返回:
[{ index: 4, value: 'odd' }, { index: 6, value: 'three' }]