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