js数组去重
Posted auserroot
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js数组去重相关的知识,希望对你有一定的参考价值。
数组去重
let array = [1,2,3,12,2,3]
//1. Array.from & Set || ... & new Set
// let arr = Array.from(array)
// let arr = new Set(array)//new Set 实例是一个对象
let arr = Array.from(new Set(array))
console.log(arr)
let a = [...new Set(array)]
//2. map & indexOf
//map 遍历数组 设置新数组 判断新数组中是否存在相同值 indexOf 未找到值返回 -1
const testIndexOf = (arr)=>
let arrs = []
arr.map(item=> arrs.indexOf(item)===-1&&arrs.push(item))
console.log(arrs)
testIndexOf(array)
//3.filter & indexOf
//indexOf 会返回每个值第一次出现的索引值
const tesstFilter = (arr)=>
return arr.filter((item,index)=> return arr.indexOf(item)===index)
console.log(textFilter(array))
//4. includes
//includes 存在返回 true 否则 返回 false
const testIncludes = (arr)=>
let arrs = []
arr.map(item=>!arrs.includes(item)&&arrs.push(item))
console.log(arrs)
//5. splice
const testSplice = (arr)=>
for(let i=0;i<arr.length;i++)
for(let j=i+1;j<arr.length;j++)
if(arr[i]===arr[j])
arr.splice(j,1)
j--
return arr
//splice 算法优化版
const testSplicePer = (arr)=>
for(let i=0; i<arr.length;i++)
for(let j=i+1;j<arr.length;j++)
if(arr[i]===arr[j])
arr.splice(j,1) //去除重复值
arr.length-- //数组长度递减 减少循环次数
j--
return arr
console.log(testSplice(array),testSplicePer(array))
//6. Map
//利用Map 键值对唯一去重
const testMap = (arr)=>
let map = new Map()
let array = []
for (let i = 0; i < arr.length; i++)
if(!map.has(arr[i]))
map.set(arr[i], false);
array.push(arr[i]);
console.log(arr,map,array)
return array ;
testMap (array)
//7.reduce
const testReduce = (arr) =>
return arr.reduce((accumulator, currentValue) => accumulator.includes(currentValue) ? accumulator : [...accumulator,currentValue],[]);
testReduce(array)
以上是关于js数组去重的主要内容,如果未能解决你的问题,请参考以下文章