在js的数组中找出不重复的一个数

今天看到一个一个问题,怎样在一堆数组中 找到一个不重复的数值

我开始的想法是,写双重for循环,拿值一个个的去比对,和冒泡排序的思路是一样的,后面偶然间看到一个方法,思路很清晰,代码很简洁,现在是记录一下

        function findLonelyDog(arr) {
            for (let i = 0; i < arr.length ; i++) { //正常for循环
                console.log(i,888)
                if ((arr.indexOf(arr[i])) == arr.lastIndexOf(arr[i])) {  //1,关键代码在于这,arr.indexof(arr[i])这段代码是用indexof的犯法,方法里面传入一个值,会检索这个值在数组的下标值,但是这里有一个问题,只会返回检索到第一个值的下标
                    result = arr[i];                                    // 2,lastIndexOf(arr[i]) 这个方法和indexof的方法是一样的,只不过检索的方向不一样,indexof是从下标0开始,而lastindexof是从最后一个下标开始的。
                                                                        // 3,关键来了,当我从正序检索这个数据的下标,和我倒叙检索这个数据的下标,当正,倒序的下标相等了,是不是就能认为这个数是惟一的??
                                                                        //不是唯一不可能下标一样哈

                    break;//终止 跳出循环
                }
            }
            return result;
        }

你可能感兴趣的:(javascript,前端,开发语言)