摘要:提供了新的数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。这里当然也可以用来判断是否存在
var arr = [2,3,4,2,34,21,1,12,3,4,1]for(var i =0;i<arr.length;i++){ //第一层:每次循环拿到arr中一个元素 for(var j=i+1;j<arr.length;j++){ //第二层:每次拿到的元素再和每次拿到的元素后边的元素依次进行比对(因为第一个要从第二个开始比,第二个要从第三个比以此类推,所以这里的j应比i大1为j=i+1) if(arr[i] === arr[j]){ //如果相同就删除后边的元素 arr.splice(j,1) } }}//arr:[1, 2, 3, 4, 12, 21, 34]
创建新数组,循环旧数组,看每次循环的元素是否存在于新数组中没有就把当前元素添加到新数组中
//indexofvar arr = [2,3,4,2,34,21,1,12,3,4,1]var arr2 = []arr.forEach((e)=>{ if(arr2.indexOf(e)==-1){ arr2.push(e) }})console.log(arr2)//arr2:[1, 2, 3, 4, 12, 21, 34]
//includesvar arr = [2,3,4,2,34,21,1,12,3,4,1]var arr2 = []arr.forEach((e)=>{ if(!arr2.includes(e)){ arr2.push(e) }})console.log(arr2)//arr2:[1, 2, 3, 4, 12, 21, 34]
var arr = [2,3,4,2,34,21,1,12,3,4,1]var obj = {};arr.forEach((e,i)=>{ obj[arr[i]] = "abc"; });var arr2=Object.keys(obj)console.log(arr2)//arr2:["1", "2", "3", "4", "12", "21", "34"]var arr3 = arr2.map(e => ~~e )//arr3:[1, 2, 3, 4, 12, 21, 34]//注意这种方法不仅给数组重新排列而且还改变了数组中元素的类型
~是js里的按位取反操作符,~~就是执行两次按位取反,其实就是保持原值,但是注意虽然是原值,但是对布尔型变量执行这个操作,会转化成相应的数值型变量,也就是 ~~true === 1,~~false === 0。
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
var arr = [2,3,4,2,34,21,1,12,3,4,1]var arr1 = [...new Set(arr)]console.log(arr1)//arr1:[1, 2, 3, 4, 12, 21, 34]
注:indexOf在数组中找元素的时候,碰到符合条件的第一个就会把它的下标返回
var arr = [2,3,4,2,34,21,1,12,3,4,1]var arr2 = arr.filter((e,i)=>{ //看每次循环的元素在数组中出现的第一个下标位置(indexOf返回的位置),和每次循环的元素的下标(filter循环每次的i)是否一致,一致就说明他就是第一个符合条件,不会被过滤掉。 return arr.indexOf(e)==i;})console.log(arr2)//arr2:[1, 2, 3, 4, 12, 21, 34]
var arr = [2,3,4,2,34,21,1,12,3,4,1]var arr2 = arr.reduce((pre,e)=>{ //这里当然也可以用indexOf来判断是否存在 pre.includes(e)?pre:pre.push(e); return pre},[])console.log(arr2)//arr2:[1, 2, 3, 4, 12, 21, 34]
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/121247.html
摘要:三种方法利用判断新数组中实际上也是使用的类似的传入数组如果当前数组的第已经保存进了临时数组,那么跳过,否则把当前项到临时数组里面利用判断旧数组结果数组如果当前数组的第项在当前数组中第一次出现的位置不是,那么表示第项是重复的,忽略掉。 三种方法 利用indexOf判断新数组 underscore.js中实际上也是使用的类似的indexOf //传入数组 functio...
摘要:方法新特性方法利用对象名唯一方法利用数组包含方法排序比较兄弟元素方法双循环比较 方法1:ES6新特性Set Array.prototype.rmSome = function() { return Array.from(new Set(this)); } 方法2:利用对象名唯一 Array.prototype.rmSome = function() { let te...
摘要:数组去重是校招面试的必考知识点。以下就是笔者所实现的数组去重的几种简单的方式。结合实现这种方法的关键点就是判断是否相同的时候不要忽略对元素类型的判断。以上就是笔者所想到的几个数组去重的方式大家如果有更好的方法欢迎留言。 数组去重,是校招面试的必考知识点。简单的说,数组去重就是将一个数组中的相同的元素删除,只保留其中的一个。这里的相同其实是一个陷阱,有好多同学只认为值相等即为相同,而忽略...
摘要:去重的几种方案双层循环排序后比较相邻元素是否相等压入数组有限制,但效率高高性能数组去重 JS去重的几种方案 new Set() 双层for循环 + splice Array.fliter + indexof Arroy.sort + 排序后比较相邻元素是否相等压入数组 for ... of + includes for ... of + object 有限制,但效率高 JS高性能数组...
阅读 1784·2023-04-25 14:50
阅读 2731·2021-11-17 09:33
阅读 3128·2021-09-27 13:35
阅读 2454·2019-08-30 13:07
阅读 2727·2019-08-29 16:57
阅读 777·2019-08-29 15:26
阅读 3340·2019-08-29 13:08
阅读 1777·2019-08-29 12:32