JS常用的数组去重方法

前端开发一些需求时经常需要对数组的元素作唯一处理,也就是将数组中重复的项目剔除掉,只保留唯一的一份。下面分享几个JS常用的数组去重方法。

假设以下声明数组:

var array = [3, 'a', 17, 1, 'v', 'd', 44, 3, 'rr', 1, 'd'];

1.遍历目标数组,结果数组用 indexOf() 方法检索是否存在遍历项,将不存在于结果数组的项目推入

function unique(arr) {
  if (!Array.isArray(arr)) {
  return;
}

var i, val, result = [];

for (i = 0; i < arr.length; i++) {
  val = arr[i];

  if (result.indexOf(val) === -1) {
    result.push(val);
  }
}

  return result;
}

console.log(unique(array));
// > [3, 'a', 17, 1, 'v', 'd', 44, 'rr']

2.遍历目标数组,结果数组用 includes() 方法判断是否已包含遍历项,将不存在于结果数组的项目推入(ES6)

function unique(arr) {
  if (!Array.isArray(arr)) {
  return;
}

var i, val, result = [];

for (i = 0; i < arr.length; i++) {
  val = arr[i];

  if (result.includes(val)) {
    result.push(val);
  }
}

  return result;
}

console.log(unique(array));
// > [3, 'a', 17, 1, 'v', 'd', 44, 'rr']

3.使用数据结构 Set 传入目标数组生成成员唯一的集合,再转成数组(ES6)

function unique(arr) {
  if (!Array.isArray(arr)) {
  return;
}

  return Array.from(new Set(arr));
}

console.log(unique(array));
// > [3, 'a', 17, 1, 'v', 'd', 44, 'rr']
此条目发表在JavaScript分类目录,贴了, 标签。将固定链接加入收藏夹。