RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
js数组去重的方法有哪些

JavaScript数组去重的方法有很多,下面我将介绍几种常见的方法。

1、利用Set数据结构去重

Set是一种特殊类型的集合,它只允许唯一的值存在,我们可以将数组转换为Set,然后再转换回数组,这样就可以实现去重的目的,这种方法简单快捷,但是需要注意的是,Set会改变原数组的顺序。

function unique(arr) {
  return Array.from(new Set(arr));
}

2、利用双重循环去重

双重循环去重的原理是,遍历数组,对于每一个元素,再遍历它后面的所有元素,如果发现有相同的元素,就将其删除,这种方法比较直观,但是时间复杂度较高,不适用于大数据量的处理。

function unique(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;
}

3、利用indexOf方法去重

indexOf方法可以返回一个元素在数组中第一次出现的索引,如果没有出现则返回-1,我们可以遍历数组,对于每一个元素,如果它不在新数组中,就将其添加到新数组中,这种方法简单易懂,但是需要注意的是,indexOf方法本身的时间复杂度较高,不适用于大数据量的处理。

function unique(arr) {
  let result = [];
  for (let i = 0; i < arr.length; i++) {
    if (result.indexOf(arr[i]) === -1) {
      result.push(arr[i]);
    }
  }
  return result;
}

4、利用filter方法去重

filter方法可以创建一个新数组,其包含通过测试的所有元素,我们可以利用这一点,遍历数组,对于每一个元素,如果它不在新数组中,就将其添加到新数组中,这种方法简洁高效,但是需要注意的是,filter方法本身的时间复杂度较高,不适用于大数据量的处理。

function unique(arr) {
  let result = [];
  for (let i = 0; i < arr.length; i++) {
    if (result.indexOf(arr[i]) === -1) {
      result.push(arr[i]);
    }
  }
  return result;
}

以上就是JavaScript数组去重的几种常见方法,每种方法都有其优点和缺点,具体使用哪种方法,需要根据实际情况来决定。

相关问题与解答

问题1:JavaScript数组去重后,原数组会被改变吗?

答案:这取决于你使用的去重方法,如果你使用的是Set数据结构去重或者双重循环去重,那么原数组的顺序会被改变,如果你使用的是indexOf方法或者filter方法去重,那么原数组的顺序不会改变。

问题2:JavaScript数组去重的效率如何?

答案:这取决于你使用的去重方法,Set数据结构去重的效率最高,因为它是基于Hash算法的,双重循环去重的效率最低,因为它的时间复杂度是O(n^2),indexOf方法和filter方法的效率介于两者之间。


当前名称:js数组去重的方法有哪些
文章分享:http://www.jxjierui.cn/article/copipgc.html