数组去重在我们实际开发中是必不可少的,趁此摸鱼之际,回忆一下自己曾经用过的去重的方法,和各位小伙伴交流一哈!
废话不多说,直接上代码,免得被…抓鱼程序猿届大牛的基本配置
!!!
方法一:
/**
* new Set()
* ES6 新增
*/
function repeat(arr) {
return Array.from(new Set(arr))
}
let arr1 = [...new Set(arr)]
console.log(repeat(arr),arr1);
// (8) [1, 2, 4, 5, 6, 7, 3, 78] (8) [1, 2, 4, 5, 6, 7, 3, 78]
方法二:
/**
* indexOf()
*/
function repeat1(arr) {
let result = []
for (var i = 0; i < arr.length; i++) {
if (result.indexOf(arr[i]) === -1) {
result.push(arr[i])
}
}
return result
}
console.log(repeat1(arr));
// (8) [1, 2, 4, 5, 6, 7, 3, 78]
方法三:
/**
* includes()
* ES7
*/
function repeat2(arr) {
let result = []
for (var i = 0; i < arr.length; i++) {
// 判断数组元素是否重复
if (!result.includes(arr[i])) {
result.push(arr[i])
}
}
return result
}
console.log(repeat2(arr));
// (8) [1, 2, 4, 5, 6, 7, 3, 78]
方法 四
function repeat3(arry) {
let result = [];
let map = new Map();
for (let i = 0; i < arry.length; i++) {
if (map.has(arry[i])) {
map.set(arry[i], true);
} else {
map.set(arry[i], false);
result.push(arry[i]);
}
}
return result;
}
console.log(repeat3(arr));
产品经理: 以上方法, 优化一下!
程序猿:给你个眼神自己体会!!!
方法五:
//
// 用了一个HASH表。一次遍历就好
function repeat4(arr){
var value = [];
var hash = {};
for(var i=0,j=arr.length;i<j;++i){
var type = typeof arr[i]+arr[i];
if(!hash[type]){
hash[type] = 1;
value[value.length] = arr[i];
}
}
return value;
}
console.log(repeat4(arr))
方法六:
// 依次for循环 + some()方法 只要一个为true 就返回true
function unique8(arr){
var result = [arr[0]]
// 临时数组 存放去重数组的第一个元素
for (var i = 0; i < arr.length; i++) {
// 判断数组元素是否重复出现
if (!(result.some(val => arr[i] === val ))) {
result.push(arr[i])
}
}
return result
}
console.log(unique8(array))