陣列去重方法是老生常談,特別是一些bat大廠的面試都會提到這個問題,既然是常談,那麼我也來談談
使用迴圈巢狀,最外層迴圈 array,裡面迴圈 res,如果 array[i] 的值跟 res[j] 的值相等,就跳出迴圈,如果都不等於,說明元素是唯一的,這時候 j 的值就會等於 res 的長度,根據這個特點進行判斷,將值新增進 res。
function unique(array)
}// 如果array[i]是唯一的,那麼執行完迴圈,j等於res.length
if (j === res.length)
}return res;
}var arr = [1, '1', 2, 2, '3', 3]
console.log(unique(arr)); // [1, "1", 2, "3", 3]
indexof()方法可返回某個指定的字串值在字串中首次出現的位置,如果要檢索的字串值不存在則返回-1。可以通過indexof()方法來簡化內層的迴圈
function unique(array)
}return res;
}var arr = [1, '1', 2, 2, '3', 3]
console.log(unique(arr)) // [1, '1', 2, '3', 3]
將需要去重的陣列用sort()方法進行排序後,相同的值就會排序到一起,再通過判斷當前元素與上乙個元素是否相同,相同就說明重複,不同就新增到res
function unique(array)
seen = sortedarray[i];
}return res;
}var arr = ['3', 3, 1, '1', 2, 2,]
console.log(unique(arr)) // [1, '1', 2, '3', 3]
filter() 用來檢測陣列元素,並返回符合條件的所有元素的陣列,filter()接收三個引數, 引數一表示陣列的某個元素,引數二表示是陣列元素的位置index,引數三代表陣列本身。可以把以上兩種方法作為filter的條件來進行篩選
使用indexof方法作為篩選條件
function unique(array) )
return res;
}var arr = ['3', 3, 1, '1', 2, 2,]
console.log(unique(arr)) // [1, '1', 2, '3', 3]
使用排序方法作為篩選條件
function unique(array) )
}var arr = ['3', 3, 1, '1', 2, 2,]
console.log(unique(arr)) // [1, '1', 2, '3', 3]
es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。set函式可以接受乙個陣列(或類似陣列的物件)作為引數,用來初始化。
function unique(array)
var arr = ['3', 3, 1, '1', 2, 2,]
console.log(unique(arr)) // [1, '1', 2, '3', 3]
// 利用es6箭頭函式簡化
var unique = (array) => [...new set(array)]
var arr = ['3', 3, 1, '1', 2, 2,]
console.log(unique(arr)) // [1, '1', 2, '3', 3]
Javascript基礎系列 陣列
var a new array 複製 var a new array 10 複製 var a new array 5,4,3,test 複製 a 1,2,3 delete a 1 a在索引1的位置不再有元素 1 in a false 陣列索引1並未在陣列中定義 a.length 3 delete操作...
複習系列 javascript陣列的常用方法總結
反向陣列array.reverse var unorderednumber 4,8,9,6,7,10,52,69,74,52,33,1,65,97,5 unorderednumber.reverse 排序陣列array.sort 由於陣列排序是將陣列元素直接轉換成字串比較 將每個陣列元素呼叫tost...
JavaScript系列 ECMAScript語句
1 if語句 if語句語法 if condition statement1 else statement2 2 迭代語句 迭代語句又叫迴圈語句,宣告一組需要反覆執行的命令,直到滿足了某些條件為止。ecmascript為了這種處理提供了四種迭代語句。2.1 do while語句 do while語句是...