/* * @Author: Mr.live * @Date: 2018-01-23 15:12:45 * @Last Modified by: Mr.live * @Last Modified time: 2018-01-23 15:40:28 */ // 数组去重 var arr=[1,2,3,2,33,44,44,2] // 1)对象存放,哈希算法(映射)判断 function unique(arr) { // n为hash表,r为临时数组 var n = {}, r = []; for (var i = 0; i < arr.length; i++) { // 如果hash表中没有当前项 if (!n[arr[i]]) { // 存入hash表 n[arr[i]] = true; // 把当前数组的当前项push到临时数组里面 r.push(arr[i]); } } return r; } // 2) 新语法结构去重 // es5简化版 Array.prototype.unique1 = function() { return this.filter((v, i) => this.indexOf(v) === i) } // es6简化版 Array.prototype.unique2 = function() { return Array.from(new Set(this)); } // 或 Array.prototype.unique3 = function() { return [...new Set(this)]; } // 3)使用数组的indexOf()方法可以很简单的达到目的。 var arr2 = [ 1, 2, 1, 2, ‘1‘, ‘11‘]; function unique4(arr) { // 创建一个新的临时数组,用于保存输出结果 var n = []; // 遍历当前数组 for (var i = 0; i < arr.length; i++) { // 如果当前数组的第i个元素已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面 if (n.indexOf(arr[i]) == -1) n.push(arr[i]); } return n; } console.log(unique4(arr2))