我在这里有一组数据,你可以在下面看到。
我想要的是获得在数组中具有唯一值的index
element
。
var setArray = [ false, true, false, false ]
// Sample result will be 1, the index of unique value in array is true
// and has a index of 1
// code here to get the index...
我该如何解决这个问题?
答案 0 :(得分:1)
您是否尝试过以下算法: 对于数组中的每个项目,找到第一次出现的索引和下一次出现的索引。如果下一次出现的索引是-1,那么它是唯一的。
var setArray = [ false, true, false, false ];
var unique = [];
setArray.forEach(item => {
let firstIndex = setArray.indexOf(item, 0);
let secondIndex = setArray.indexOf(item, firstIndex + 1);
if(secondIndex < 0) {
unique.push(firstIndex);
}
});
例如见下面的小提琴:
https://jsfiddle.net/yt24ocbs/
答案 1 :(得分:1)
var setArray = [ false, true, false, false ]
function singles( array ) {
for( var index = 0, single = []; index < array.length; index++ ) {
if( array.indexOf( array[index], array.indexOf( array[index] ) + 1 ) == -1 ) single.push( index );
};
return single;
};
singles(setArray); //This will return 1
ThinkingStiff对this问题稍作修改,以满足您的需求。只需传入您的数组,它将返回唯一元素的索引值!那么简单。让我知道它是怎么回事。
答案 2 :(得分:0)
此代码将返回数组中所有唯一元素的索引数组。它接受不同类型的值:string,number,boolean。
[[
&#13;
答案 3 :(得分:0)
您可以映射唯一值的索引,然后仅过滤索引。
var array = [false, true, false, false],
result = array
.map(function (a, i, aa) { return aa.indexOf(a) === aa.lastIndexOf(a) ? i : -1; })
.filter(function (a) { return ~a; });
console.log(result[0]);
&#13;
ES6
var array = [false, true, false, false],
result = array
.map((a, i, aa) => aa.indexOf(a) === aa.lastIndexOf(a) ? i : -1)
.filter(a => ~a);
console.log(result[0]);
&#13;