zoukankan      html  css  js  c++  java
  • 数组去重

    数组去重,主要思路是循环遍历这个数组里的每一个数据,然后再定义一个新数组,if条件判断不重复的再往新数组里添加,最后返回新数组即可去重。这个问题思路差不多,但实现方法可以不同,话不多说,直接上代码:
    方法一:是比较原生的的写法
    function has(arr,n) { var flag = false; for(var i=0; i<arr.length;i++) { if(arr[i] == n) { flag = true; break; } } return flag; } function norepeat(arr) { var newArr = []; for(var i=0; i<arr.length; i++) { if(!has(newArr,arr[i])) { newArr.push(arr[i]); } } return newArr; }

    方法二:
    function norepeat(arr) {
    	var newArr = arr.filter(function(val,index,self) {
    		return self.indexOf(val) === index;
    		
        }) return newArr;
    }
    方法三:
    function norepeat(arr) {
    	var newArr = [];
    	for(var i=0; i<arr.length; i++) {
    		if(arr.indexOf(arr[i]) === i) {
    			newArr.push(arr[i]);
    		}
    	}
    	return newArr;
    }
    这两个方法的思路主要是利用indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等作判断条件,因为数组里有许多API,所以实现方式有多种。其实还有forEach也行:
    function norepeat(arr) {
    	var newArr = [];
    	arr.forEach(function(val,key) {
    		if(arr.indexOf(val) === key) {
    			newArr.push(val);
    		}
    	})
    	return newArr;
    }

    再其实,上面那段代码只要把forEach方法换成map方法,效果一模一样;
    function norepeat(arr) {
    	var newArr = [];
    	arr.map(function(val,key) {
    		if(arr.indexOf(val) === key) {
    			newArr.push(val);
    		}
    	})
    	return newArr;
    }

    //怎么感觉在练习怎么循环遍历数组啦~~

    方法四:哈哈!!这是最高级的哦,两行代码就搞定啦啦啦!!!
    function norepeat(array) {
      return Array.from(new Set(array));
    }
    set是一个集合,里面的值都是独一无二的,值传入里面就自动带有去重功能,它是一个伪数组,最后通过Array.from方法转换为真数组即可;
    入行不久,能想到的就这些,还有其他方法的,欢迎跟我探讨!!






  • 相关阅读:
    浅谈 facebook .net sdk 应用
    数据库中各种字符串的截取函数
    初、中、高级测试工程师面试题汇总(附答案)
    包管理器 scoop
    ModuleNotFoundError: No module named 'pymouse'解决办法
    Python 正则表达式(分组)
    7个Python实战项目代码,让你分分钟晋级大神!
    经典SQL查询题目
    linux中软件的安装和卸载方法
    测试常用工具
  • 原文地址:https://www.cnblogs.com/sophia0102/p/9043705.html
Copyright © 2011-2022 走看看