一、結(jié)合 includes() 輸出的還是數(shù)組
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>數(shù)組去重</title>
</head>
<body>
<script>
let arr = [1, 1, 2, 3]
function unique(arr) {
// 1.判斷傳進來的是不是數(shù)組
if (!Array.isArray(arr)) {
console.log('傳進來的不是數(shù)組');
}
//2.定義一個新的空數(shù)組,方便提取出去重后的數(shù)組
let newArr = [6, 8]
// 3.定義循環(huán)下標(biāo)
for (let i = 0; i < arr.length; i++) {
//4. 判斷 新的空數(shù)組 是否包含了 舊數(shù)組的某一項,不包含就把這一項添加到新數(shù)組
if (!newArr.includes(arr[i])) {
newArr.push(arr[i])
}
}
// 5.同層 把定義的變量 return 出去
return newArr
}
console.log(unique(arr)); //(5) [3, 2, 1, 6, 8] 輸出的還是數(shù)組
document.writeln(unique(arr)) //1,2,3
</script>
</body>
</html>
二、結(jié)合 find(), 輸出的還是數(shù)組
<script>
let arr = [1, 2, 3, 1, 2]
function unique(arr) {
if (!Array.isArray(arr)) {
console.log('傳進來的不是數(shù)組');
return
}
var arr2 = []
for (let i = 0; i < arr.length; i++) {
//find()傳入一個回調(diào)函數(shù),在回調(diào)函數(shù)里面把傳入的每一項拿到, 找符合條件的第一項,如果符合就返回
if (!arr2.find(function (v) {
// console.log(v);
return v == arr[i] //v 傳過來的
})) {
arr2.push(arr[i])
}
}
return arr2
}
console.log(unique(arr));//(3) [1, 2, 3]
</script>
箭頭函數(shù)寫
let arr = [1, 2, 3, 1, 2]
function unique(arr) {
if (!Array.isArray(arr)) {
console.log('傳進來的不是數(shù)組');
}
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (!newArr.find((v) => {
return v == arr[i]
})) {
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique(arr)); //(3) [1, 2, 3]
三、結(jié)合 findIndex(), 輸出的還是數(shù)組
<script>
let arr = [1, 1, 2, 3]
function unique(arr) {
var arr3 = []
if (!Array.isArray(arr)) {
console.log('抱歉,傳入的不是數(shù)組');
}
for (let i = 0; i < arr.length; i++) {
if (arr3.findIndex(function (v) {
return v == arr[i]
}) == -1) {
arr3.push(arr[i])
}
}
return arr3
}
console.log(unique(arr));//(3) [1, 2, 3]
</script>
四、es6 Set() 去重后,不是數(shù)組類型
<script>
let arr = [1, 2, 3, 1, 2]
const newArr = new Set(arr)
console.log(newArr); //Set(3) {1, 2, 3} 去重后,不是數(shù)組類型
document.writeln(newArr) //[object Set]
</script>
找到 方法了:
獲取唯一值數(shù)組可能比想象的要容易:
var j = [...new Set([1, 2, 3, 3])]
>> [1, 2, 3]