js给数组去重写法

数组为 var list =['A','B','A'];

法一:常规做法,新建list,给list添加元素,添加前判断是否包含
var removeRepeatItem = function(list){
  var newList = [];
  for(var i=0;i<list.length;i++){
    if(newList.indexOf(list[i])==-1){ //不包含
      newList.push(list[i]);
       }
   }
  return newList;
}

法二、两次遍历同一数组,比对是否相同,先排除比对自己,然后对相同的后者删除,同时使数组的大小减一

var removeRepeatItem = function(list) {
  var listLen = list.length;
  for(var i=0;i<listLen;i++){
    for(var j=0;j<listLen;j++){
      if(i!=j){ //不跟自己比较
        if(list[i]==list[j]){
          list.splice(j, 1);//删除后者
          listLen--;  //同时遍历次数减一
        }
          }
      }
   }
  return list;
}


法三、利用对象键唯一的原理,将数组元素的值作为对象的键名称(或者键名称的一部分),元素的值作为相应键的值,这样便得到了新的对象。
var removeRepeatItem = function(list) {
  var newList = [],
  temp = {};
  //数租 => 对象 (利用键唯一原理去重)
  for (var i = 0; i < list.length; i++) {
    temp[typeof(list[i]) + list[i]] = list[i];
   }
  //对象 => 数组
  for (var j in temp) {
    newList.push(temp[j]);
   }
  return newList;
}
  
原文地址:https://www.cnblogs.com/hdwang/p/4607934.html