欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

js数组去重(多种写法)

程序员文章站 2023-12-26 19:04:39
最基本的写法 使用indexOf() 看起来性能还不错的去除方法 假如只要排序的话 我们可以用一行代码实现 ......

最基本的写法 使用indexof()

var arr = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2]
//比较常规的语法使用indexof来判断是否已经存在
getfilearray(arr)
function getfilearray(arr){
  var array = [];
  arr.foreach(e => {
    if(array.indexof(e) !== -1){
      return;
    }else {
      array.push(e)
    }
  });
  return array;
}

看起来性能还不错的去除方法

// 通过遍历每次被值给到数组角标 适用于数组里面数量不太的数组
var arr = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2]
getfilterarray(arr)
function getfilterarray (array) {
    const res = [];
    const json = {};
    for (let i = 0; i < array.length; i++){
        const _self = array[i];    //获取迭代的数值
        if(!json[_self]){          //假如json在_self这个下标没有数值,就说明这个数据没有
            res.push(_self);       //没有的话就push
            json[_self] = 1;       //同时给这和匹配不到的下标一个值,保证下次进不来
        }                          // 这样写的话 不需要循环遍历 对性能要求更小
    }
    return res;
}

另类的写法

var array = [1, 1, 5, 77, 32, 54, 2, 4, 5, 2, 2, 4, 52, 2, 2, 2, 2, 2]
arrtoobject(arr)
function arrtoobject(arrs) {
  //var obj={};
  var obj = new object();
  for (var i = 0; i < arrs.length; i++) {
    obj[arrs[i]] = true;
  }
  objecttoarr(obj)
}

function objecttoarr(obj){
  console.log(obj);
  var arr = [];
  for (const i in obj) {
    arr.push(i)
  }
  console.log(arr);
  return arr
}

es5 filter过滤函数

var array = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2]
function unique(array) {
  var res = array.filter(function (item, index, array) {
    return array.indexof(item) === index;   //因为array.indexof返回数组的下标 如果这里的下标和index不一样说明已经存在了,就直接退出了
  })
  return res;
}

console.log(unique(array));

es6 set 这简直就是为过滤而生的 过滤 排序

var arr = [1, 1, 5, 77, 32, 54, 2, 4, 5, 2, 2, 4, 52, 2, 2, 2, 2, 2]

function filterarray(arr) {
  set = new set(arr)
  let arrays = array.from(set)
  arrays.sort((a, b) => {
    return a - b
  })
  return arrays
}
filterarray(arr)

假如只要排序的话

我们可以用一行代码实现

var arr = [1, 1, 5, 77, 32, 54, 2, 4, 5, 2, 2, 4, 52, 2, 2, 2, 2, 2]
var filterarray = (arr) => [...new set(arr)]   //
filterarray(arr)

上一篇:

下一篇: