查找在数组中没有任何重复的元素的索引

时间:2017-10-05 14:36:34

标签: javascript arrays sorting

我在这里有一组数据,你可以在下面看到。 我想要的是获得在数组中具有唯一值的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...

我该如何解决这个问题?

4 个答案:

答案 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;
&#13;
[[
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您可以映射唯一值的索引,然后仅过滤索引。

&#13;
&#13;
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;
&#13;
&#13;

ES6

&#13;
&#13;
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;
&#13;
&#13;