欢迎访问宙启技术站
智能推送

JavaScript如何存入数组不重复值

发布时间:2023-05-18 04:48:58

JavaScript是一门基于对象的脚本语言,在编程中经常需要使用数组来存储一组数据。但是有时候需要存储不重复的值,即相同的值只存储一次。本文将介绍如何使用JavaScript存入数组不重复值。

一、普通方法

种方法是最简单的,通过遍历数组,将不重复的值存入另一个数组中。具体步骤如下:

1. 声明一个新的空数组

2. 遍历原数组

3. 如果新数组中不存在当前元素,将其添加到新数组中

代码示例:

var arr = [1, 2, 3, 1, 2, 4];
var newArr = [];

for (var i = 0; i < arr.length; i++) {
  if (newArr.indexOf(arr[i]) === -1) {
    newArr.push(arr[i]);
  }
}

console.log(newArr); // [1, 2, 3, 4]

这种方法的缺点是,如果原数组中有大量重复的元素,性能会受到影响。因为每次判断都需要遍历新数组。

二、es6方法

第二种方法使用es6语法中的Set对象来存储不重复的值。Set对象只能存储 的值,可以通过for...of循环遍历其元素。具体步骤如下:

1. 声明一个新的Set对象

2. 遍历原数组,将每个元素添加到Set对象中

3. 将Set对象转换为数组

代码示例:

var arr = [1, 2, 3, 1, 2, 4];
var set = new Set(arr);
var newArr = Array.from(set);

console.log(newArr); // [1, 2, 3, 4]

这种方法的优点是性能更好,因为只需要遍历一次原数组,而且Set对象可以自动去重。缺点是需要使用es6语法,不兼容老版本浏览器。

三、双重循环

第三种方法使用双重循环,每次循环时判断是否与前面的重复。如果重复就不将其添加到新数组中。具体步骤如下:

1. 声明一个新的空数组

2. 遍历原数组

3. 在内部循环中判断是否与前面的元素重复,如果不重复就添加到新数组中

代码示例:

var arr = [1, 2, 3, 1, 2, 4];
var newArr = [];

for (var i = 0; i < arr.length; i++) {
  var isRepeat = false;
  for (var j = 0; j < newArr.length; j++) {
    if (arr[i] === newArr[j]) {
      isRepeat = true;
      break;
    }
  }
  if (!isRepeat) {
    newArr.push(arr[i]);
  }
}

console.log(newArr); // [1, 2, 3, 4]

这种方法的缺点是性能较差,因为需要使用双重循环,时间复杂度为O(n2)。建议仅在数据量较小的情况下使用。

综上所述,JavaScript中有多种方法存入数组不重复值,可以根据实际情况选择合适的方法。例如,如果需要兼容老版本浏览器,可以使用 种方法;如果数据量较大,可以使用第二种方法;如果数据量较小,可以使用第三种方法。