前端开发一些需求时经常需要对数组的元素作唯一处理,也就是将数组中重复的项目剔除掉,只保留唯一的一份。下面分享几个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']