今天看到一个一个问题,怎样在一堆数组中 找到一个不重复的数值
我开始的想法是,写双重for循环,拿值一个个的去比对,和冒泡排序的思路是一样的,后面偶然间看到一个方法,思路很清晰,代码很简洁,现在是记录一下
functionfindLonelyDog(arr) { for (leti=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;//终止 跳出循环 } } returnresult; }