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数组去重的主要内容,如果未能解决你的问题,请参考以下文章

js数组去重的方法

对象数组去重

js利用Map对两个数组对象进行合并去重

(去重)JS比较两个数组对象,取出不同的值

JS数组去重的方法汇总

JS中数组对象去重