码迷,mamicode.com
首页 > 编程语言 > 详细

js数组去重

时间:2018-08-27 21:31:12      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:turn   方法   相同   重复数据   index   长度   pre   highlight   []   

 /*去重第一种方法:遍历数组,查看对应的每个值的索引是否为当前索引,不是则重复,删除*/
    var arr = [20,23,40,45,60,23,45,60,20,40,20,20,20,20,20,20,20,20];
    function rmArr1(arr) {
        for(var i = 0; i < arr.length; i++){
            if(arr.indexOf(arr[i]) != i){//查看数组中遍历的这个值是否是第一次出现索引值,不是的话则是重复数据
                //移除当前重复值
                arr.splice(i,1);//从索引i处删除长度为1的数据
                i--;
            }
        }
       return arr;
    }
    document.write(rmArr1(arr));

    document.write("<br>");

    //去重第二种方法:双层循环,内层循环查找始终比外层循环多一个索引,如果碰到的值相同则删除
    var arr1 = [20,23,40,45,60,23,45,60,20,45,45,45,45,45,45,45];
    function rmArr2(arr) {
        for (var i = 0; i < arr1.length; i++) {
            for (var j = i + 1; j < arr1.length; j++) {
                if(arr1[i] == arr1[j]) {
                    arr1.splice(j, 1);//删除后索引前移
                    j--;//索引回退,继续执行写一个索引j,即删除掉的索引值
                }
            }
        }
        return arr;
    }
    document.write(rmArr2(arr1));

    document.write("<br>");

    //去重方法三:借助新的数组,当循环下标与当前值的索引一致,则添加到数组中
    var arr2 = [20,23,40,45,60,23,45,60,20,45,45,45,45,45,45,45];
    function rmArr3(arr) {
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if(arr.indexOf(arr[i]) == i){
                newArr.push(arr[i]);
            }
        }
        return newArr;
    }

    document.write(rmArr3(arr2));

   	//去重第四种 利用新的数组  
		//当在数组中查找一个数据不存在时,返回一个-1的索引
		var newArr = [];
		for (var i = 0; i < arr.length; i++) {
			if(newArr.indexOf(arr[i]) == -1){
				newArr.push(arr[i]);
			}
		}
		console.log(newArr);

  

js数组去重

标签:turn   方法   相同   重复数据   index   长度   pre   highlight   []   

原文地址:https://www.cnblogs.com/menglong1214/p/9543719.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!