模拟 ES6 SET 数组去重
两种方法模拟 ES6 set 数组去重
第一种,利用字符串 indexOf
function MYSET(arr) { let str = ''; let newArr = []; if (arr.length) { newArr.push(arr[0]); str += JSON.stringify(arr[0]); for (let i = 1; i < arr.length; i++) { let temp = JSON.stringify(arr[i]) if (str.indexOf(temp) === -1) { str += temp; newArr.push(arr[i]); } } } return newArr; } let arr = [3, 1, 3, 1, 2, 2, { a: 1 }, { b: 1 }, { a: 1 }]; console.log(MYSET(arr));
第二种,利用对象 key 值不重复的特点
function MYSET(arr) { let obj = {}; let newArr = []; if (arr.length) { newArr.push(arr[0]); obj[JSON.stringify(arr[0])] = arr[0]; for (let i = 1; i < arr.length; i++) { let temp = JSON.stringify(arr[i]); if (!obj[temp]) { obj[temp] = arr[i]; newArr.push(arr[i]); } } } return newArr; } let arr = [3, 1, 3, 1, 2, 2, { a: 1 }, { b: 1 }, { a: 1 }]; console.log(MYSET(arr));
这就是我最近想到并实现的两种方法,如果有其他或者是更好的实现方法,希望大家留言评论告诉我。