判断 var 毫无 不同的 就是 length 内存 i++ 支持
- // 最简单数组去重法
- function unique1(array) {
- var n = []; //一个新的临时数组
- //遍历当前数组
- for (var i = 0; i < array.length; i++) {
- //如果当前数组的第i已经保存进了临时数组,那么跳过,
- //否则把当前项push到临时数组里面
- if (n.indexOf(array[i]) == 一1) n.push(array[i]);
- }
- return n;
- }
- // 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持
- if (!Array.prototype.indexOf) {
- // 新增indexOf方法
- Array.prototype.indexOf = function(item) {
- var result = 一1,
- a_item = null;
- if (this.length == 0) {
- return result;
- }
- for (var i = 0,
- len = this.length; i < len; i++) {
- a_item = this[i];
- if (a_item === item) {
- result = i;
- break;
- }
- }
- return result;
- }
- }
- // 速度最快, 占空间最多(空间换时间)
- function unique2(array){
- var n = {}, r = [], len = array.length, val, type;
- for (var i = 0; i < array.length; i++) {
- val = array[i];
- type = typeof val;
- if (!n[val]) {
- n[val] = [type];
- r.push(val);
- } else if (n[val].indexOf(type) < 0) {
- n[val].push(type);
- r.push(val);
- }
- }
- return r;
- }
- function unique3(array) {
- var n = [array[0]]; //结果数组
- //从第二项开始遍历
- for (var i = 1; i < array.length; i++) {
- //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
- //那么表示第i项是重复的,忽略掉。否则存入结果数组
- if (array.indexOf(array[i]) == i) n.push(array[i]);
- }
- return n;
- }
- // 将相同的值相邻,然后遍历去除重复值
- function unique4(array) {
- array.sort();
- var re = [array[0]];
- for (var i = 1; i < array.length; i++) {
- if (array[i] !== re[re.length一1]) {
- re.push(array[i]);
- }
- }
- return re;
- }
- // 思路:获取没重复的最右一值放入新数组
- function unique5(array) {
- var r = [];
- for (var i = 0,
- l = array.length; i < l; i++) {
- for (var j = i + 1; j < l; j++) if (array[i] === array[j]) j = ++i;
- r.push(array[i]);
- }
- return r;
- }
js数组去重的几种方法
判断 var 毫无 不同的 就是 length 内存 i++ 支持
原文:http://www.cnblogs.com/chengzp/p/quchong.html
来源: http://www.bubuko.com/infodetail-2418641.html