在 JavaScript 中,对两个数组进行去重可以通过多种方法实现。以下介绍几种常见的方法及其原理:
Set
和 展开运算符 (...
)Set
是 ES6 引入的数据结构,具有自动去重的特性。通过将两个数组合并后转换为 Set
,再转换回数组即可实现去重。
const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];
const combinedArray = [...new Set([...array1, ...array2])];
console.log(combinedArray); // 输出: [1, 2, 3, 4, 5, 6]
优势:
filter
和 indexOf
通过遍历合并后的数组,利用 filter
方法和 indexOf
判断元素是否首次出现。
const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];
const combinedArray = [...array1, ...array2];
const uniqueArray = combinedArray.filter((item, index) => {
return combinedArray.indexOf(item) === index;
});
console.log(uniqueArray); // 输出: [1, 2, 3, 4, 5, 6]
优势:
Set
的旧环境。利用对象的键名唯一性来去重。
const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];
const combinedArray = [...array1, ...array2];
const uniqueArray = Object.keys(combinedArray.reduce((acc, item) => {
acc[item] = true;
return acc;
}, {})).map(Number);
console.log(uniqueArray); // 输出: [1, 2, 3, 4, 5, 6]
优势:
Set
或对象属性去重,这些方法在处理大数据量时性能更好。1
和字符串 "1"
),上述方法会将它们视为不同的元素。Set
或 filter
方法,这些方法会保留元素的原始顺序。通过以上方法和注意事项,可以有效地对两个数组进行去重操作,确保数据的唯一性和准确性。