当前位置:网站首页>JS中的数字数组去重

JS中的数字数组去重

2022-06-25 22:09:00 wen_文文

 // 方法1:  ES6中的Set数据结构法
 function arrRemoval(array) {
  //  let set = Array.from(new Set(array));
   let set = [...new Set(array)];
   return set;
 }

//方法2:定义一个空的新数组,每次判断新数组中是否包含当前元素,如果不包含则添加
 function arrRemoval(array) {
   let result = [];
   array.forEach((ele,ind) =>{
      if(!result.includes(ele)) {
        result.push(ele);
      }
   })
   return result;
 }

 //方法3: indexOf法, indexof(item):返回数组中找到的第一个元素的下标
 function arrRemoval(array) {
   let result = [];
   result = array.filter((ele,ind) =>{
      return array.indexOf(ele)===ind; 
   })
   return result;
 }

 //方法4: reduce法: 
 function arrRemoval(array) {
     let result = [];
     // 定义初始的pre为[]  
     result = array.reduce( function(pre, item){
       // return pre.indexOf(item)!==-1 ? pre : pre.concat(item);
       return pre.indexOf(item)!==-1 ? pre : [...pre,item];
     }, [])
    return result;
 }

// 方法5:利用对象中的key不可重复的特性,如果key重复则后面设置的value覆盖前面的value
 function arrRemoval(array) {
      let result = {};
      // 定义初始的pre为[]  
      array.forEach((ele,ind) => {
        result[ele] = ind;
      });
      // console.log(Object.keys(result));   //["1", "2", "3", "4", "5"]
      
      return Object.keys(result).map((ele,ind)=>{
        // ~~返回的结果为数值型
        // return ~~ele;
        return parseInt(ele);
      })
 }
 // 方法6: 先排序, 然后比较第i项和i+1项,
 function arrRemoval(array) {
      let result = [];
      array.sort();
      for(let i=0;i<array.length;i++) {
        if(array[i] !== array[i+1]) {
          result.push(array[i]);
        }
      }
      return result;
 }

// 方法7: 用当前元素和数组后面的每一项比较,如果存在相等项则丢弃当前元素,不存在相等的则加入新数组中
function arrRemoval(array) {
      let result = [];
      for(let i=0;i<array.length;i++) {
        for(let j=i+1;j<array.length;j++) {
          if(array[i] == array[j]) {
            i++;
          }
        }
        result.push(array[i]);
      }
      return result;
}

 

原网站

版权声明
本文为[wen_文文]所创,转载请带上原文链接,感谢
https://blog.csdn.net/zhangwen809877665/article/details/108105643