1.参考答案一:利用ES6新增数据类型 Set
Set类似于数组,但是成员的值都是唯一的,没有重复的值。
function uniq(arry) { return [...new Set(arry)]; }
2.参考答案二:利用 indexOf
function uniq(arry) { var result = []; for (var i = 0; i < arry.length; i++) { if (result.indexOf(arry[i]) === -1) { //如 result 中没有 arry[i],则添加到数组中 result.push(arry[i]) } } return result; }
3.参考答案三:利用 includes
function uniq(arry) { var result = []; for (var i = 0; i < arry.length; i++) { if (!result.includes(arry[i])) { //如 result 中没有 arry[i],则添加到数组中 result.push(arry[i]) } } return result; }
4.参考答案四:利用 reduce
function uniq(arry) { return arry.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []); }
5.参考答案五:利用 Map
function arrayNonRepeatfy(arr) { let hashMap = new Map(); let result = new Array(); // 数组用于返回结果 for (let i = 0; i < arr.length; i++) { if(hashMap.has(arr[i])) { // 判断 hashMap 中是否已有该 key 值 hashMap.set(arr[i], true); // 后面的true 代表该 key 值在原始数组中重复了,false反之 } else { // 如果 hashMap 中没有该 key 值,添加 hashMap.set(arr[i], false); result.push(arr[i]); } } return result; }