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;
}
  
时间: 2024-10-05 11:21:03

js给数组去重写法的相关文章

js中数组去重的几种方法

js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                         for(var i=0;i<arr.length;i++){                                 for(var j=i+1;j<arr.length;j++){                                         if(ar

JS中数组去重

JS数组去重 JS中对数组去重最好不要用unique方法,该方法主要是对dom节点数组的去重,如果对普通的数组元素去重只会去掉与之相邻的重复元素,也就是如果数组中还有不相邻的重复元素存在,将不会被去掉,而且有时候会出现问题,所以对数组去重可以利用如下方法: 先对数组a进行遍历,同时创建一个新的数组对象arr for (var i=0 ;i<a.length;i++) {    if (arr.indexOf(a[i]) == -1) { arr.push(a[i]) } } 经过这样处理后的数组

JS实现数组去重

1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5,0,5,2,6,7,2]; function unique1(arr){ var hash=[]; for (var i = 0; i < arr.length; i++) { if(hash.indexOf(arr[i])==-1){ hash.push(arr[i]); } } return h

js实现数组去重的三个方法、数组的快速排序

一:数组去重方法1 (思路:新建一个空的result数组,将需要去重的数组中的第一个元素传入,依次与剩余的元素进行对比,不重复则把元素传入到result数组中.) Array.prototype.removeDup = function(){ var result = [this[0]]; for(var i = 1 ; i<this.length; i++){ var repeat = false; for(var j = 0; j<result.length;j++){ if(this[i

使用js给数组去重的3种常用方法

首先定义一个数组,下面的三种方法将都是用该数组操作 // 定义一个数组 var arr=['js','js','js','html','js','java','c++','css','html5','c#','c#','css','html','js']; 1.第一种方法 1 Array.prototype.unique1=function(){ 2 for(var i=0;i<this.length-1;i++){ 3 for(var j=1;j<this.length;j++){ 4 if

js的数组去重

第一种是比较常规的方法 思路: 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中 Array.prototype.unique1 = function(){ var res = [this[0]]; for(var i = 1; i < this.length; i++){ var repeat = false; for(var j = 0; j < res.length; j++){ if(t

JS实现数组去重方法总结(六种方法)

方法一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ j = ++i; } } result.push(arr[

JS实现数组去重方法总结(极速PC蛋蛋六种方法)

方法一: 双层循环,外层循环元素极速PC蛋蛋QQ2952777280[话仙源码论坛]hxforum.com[木瓜源码论坛]papayabbs.com,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){var arr = this,result = [],i,j,len = arr.length;for(i = 0; i < len; i++){for(j = i + 1; j < len; j++){if

JS实现数组去重方法总结(三种常用方法)

方法一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){ var arr = this,result = [], i,j,len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ j = ++i; } } result.push(arr[i])