數(shù)組去重的四種方法
方法一:雙重for循壞
核心:外循環(huán)遍歷array數(shù)組甥绿,內(nèi)循環(huán)遍歷新生成的數(shù)組,當(dāng)新數(shù)組的元素與外循環(huán)的元素不一致時就push到新數(shù)組中蕾哟。
代碼實(shí)現(xiàn)如下
<script>
let array = [12, 14, 12, 13, 13, 14]
function removesame(arr) {
let b = []
let flag = true
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < b.length; j++) {
if (arr[i] == b[j]) {
flag = false
break
} else {
flag = true
}
}
if (flag) {
b.push(arr[i])
}
}
return b
}
console.log(removesame(array))
</script>
方法二:set()方法
核心:Set對象是一組不重復(fù)的值一忱,重復(fù)的值會被忽略,new出來的是一個對象要用展開運(yùn)算符放到一個數(shù)組里面
代碼實(shí)現(xiàn)如下:
<script>
var arr = [12, 14, 12, 13, 13, 14]
var nv = [...new Set(arr)]
console.log(nv);
// 兩個數(shù)組合并之后去重
let a = [1, 2, 4, 2, 3, 1, 2, 2]
let b = [2, 5, 2, 3, 1, 5, 3, 3]
let c = [...new Set([...a, ...b])]
console.log(c);
</script>
方法二補(bǔ)充:將對象轉(zhuǎn)換為數(shù)組的兩種方法 谭确, for of 或者array.from
代碼如下:
<script>
// 補(bǔ)充:變量c是一個對象帘营,轉(zhuǎn)換為數(shù)組可以
// 用for of(Set對象自帶Iterator接口,如果沒有用for of就會報錯逐哈。)遍歷
let a = [1, 2, 4, 2, 3, 1, 2, 2]
let c = new Set(a);
for (let val of c) {
console.log(val);
}
console.log(c);
// 或者用array.from 方法
let a = [1, 2, 4, 2, 3, 1, 2, 2]
let c = new Set(a);
let d = Array.from(c);
console.log(d);
</script>
方法三:indexof
核心:當(dāng)indexof沒有匹配到相同的元素就會返回-1
代碼實(shí)現(xiàn)如下:
<script>
let arr = [1, 3, 4, 6, 8, 3, 5, 7, 5, 3, 4, 6]
let ar = []
for (let i = 0; i < arr.length; i++) {
// 當(dāng)indexof沒有匹配到與ar相同的元素就會返回-1芬迄,為-1時就是我們要找的元素
if (ar.indexOf(arr[i]) === -1) {
ar.push(arr[i])
}
}
console.log(ar);
</script>
方法四: includes方法
核心:檢測數(shù)組是否有某個值,沒有某個值就返回false
代碼實(shí)現(xiàn)如下:
<script>
let arr = [1, 3, 4, 6, 8, 3, 5, 7, 5, 3, 4, 6]
let ar = []
for (var i = 0; i < arr.length; i++) {
if (!ar.includes(arr[i])) {
//includes 檢測數(shù)組是否有某個值昂秃,沒有某個值就返回false禀梳,
//那么當(dāng)前元素也就是我們要的
ar.push(arr[i]);
}
}
console.log(ar);
</script>