【前端】jQuery数组合并去重方法总结

发布于:2025-07-11 ⋅ 阅读:(12) ⋅ 点赞:(0)

在 jQuery 中合并多个数组并去重,推荐使用原生 JavaScript 的 Set 对象(高效简单)或 $.unique()(仅适用于 DOM 元素,不适用于普通数组)。以下是完整解决方案:

方法 1:使用 ES6 Set(推荐)

// 定义多个数组
const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];
const arr3 = [3, 4, 5];

// 合并数组并用 Set 去重
const mergedArray = [...new Set([...arr1, ...arr2, ...arr3])];

console.log(mergedArray); // 输出: [1, 2, 3, 4, 5]

方法 2:使用 jQuery + 原生 JS(兼容旧浏览器)

// 定义多个数组
const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];
const arr3 = [3, 4, 5];

// 使用 $.merge() 合并数组
const merged = $.merge($.merge([], arr1), arr2); // 合并前两个
const finalMerged = $.merge(merged, arr3);       // 合并第三个

// 手动去重(兼容 IE)
const uniqueArray = finalMerged.filter((item, index) => {
  return finalMerged.indexOf(item) === index;
});

console.log(uniqueArray); // 输出: [1, 2, 3, 4, 5]

封装成通用函数

function mergeUnique(...arrays) {
  const merged = [].concat(...arrays);
  return [...new Set(merged)]; // ES6 方式
  // 或兼容旧版: return merged.filter((v, i) => merged.indexOf(v) === i);
}

// 使用示例
const result = mergeUnique(arr1, arr2, arr3);
console.log(result); // [1, 2, 3, 4, 5]

重要说明:

  1. $.unique() 不适用于普通数组
    jQuery 的 $.unique() 仅用于 DOM 元素数组去重,不可用于数字/字符串数组

  2. 推荐使用原生 JavaScript
    现代浏览器中,Set 方案性能最佳(时间复杂度 O(n)),代码最简洁。

  3. 对象数组去重
    如果数组元素是对象,需自定义去重逻辑(如基于特定属性):

    const users = [{id:1}, {id:2}, {id:1}];
    const uniqueUsers = users.filter(
      (v, i, a) => a.findIndex(t => t.id === v.id) === i
    );
    

总结方案选择:

场景 推荐方案
现代浏览器 [...new Set([...arr1, ...arr2])]
兼容旧浏览器 $.merge + filter + indexOf
对象数组 自定义 filter 逻辑