用arr.filter数组去重】的更多相关文章

数组方法挺多,但是用来用去可能也就foreach,splice以及slice接触较多,filter()说实话之前也没过多了解.其实filter()为数组提供过滤功能,它会遍历数组所有元素,并返回满足条件的元素组成的新数组,filter()不会修改原数组如下: 第一位形参 , , , , , , , , , ]; var arr2 = arr.filter(function(x) { ; }); console.log(arr2); //[8, 9, 10] 上述代码所做的事情,就是将arr中每个…
let arr = [1, 2, 3, 10, 4, 5, 1, 3, 5]; let stateNumArr = arr.filter((item, index, array) => { return array.indexOf(item) === index; }); console.log(stateNumArr);…
eg: let arr=[1,0,0,9,7,7,5,2] let data=arr.filter((item,index,self)=> self.indexOf(item)===index ) console.log(data) //[1,0,9,7,5,2] // indexOf('字符串')指的是某个指定的字符串值在字符串中首次出现的位置…
实现数组去重的方法很多,最原始的方法是一个值一个值的去遍历,写到空数组里面: let r=[],arr = ['a', 'b', 'c', 'a']; for(var i=0,len=arr.length;i<len;i++){ if(r.indexOf(arr[i])===-1){ r.push(arr[i]); } } 或者是在es6里面的.map方法, 但是今天要讲的是迭代器filter,用习惯了迭代器,你可以发现它真的可以取代for循环干许多的事情,而且代码简洁, filter的定义:…
Function.prototype.call = function(context,...args){ var context = context || window; context.fn = this; var result = eval(`context.fn(...args)`); delete context.fn; return result; } call的实质就是调用函数时候改变函数中this的指向,利用对象中函数调用时候 this指向这个对象的特性我们给函数加上fn属性,指向…
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> <script type="text/javascript"> var arr = [1,2,4,5,3] var arrObj = [{'id':1,'name':…
第一种方法:借助json对象来实现,若json对象中无该属性则添加,否则不添加,最后返回json对象的属性,时间复杂度为O(n) function deleteArrayRepeat(arr) { var result = {}; var temp = []; //将数组中各元素作为属性存到json对象中 for (var i = 0; i < arr.length; i++) { if (!result[arr[i]]) { result[arr[i]] = 0; temp.push(arr[…
最近看一些面试题,很多都提到了数组去重,用的最多的不外乎就是下面这个例子 arr.filter(function(value,index,arr){ return arr.indexOf(value,index+1) === -1}) 如果忽略其他因素,只从代码简洁度和易读性来说,这个代码确实是很好的,也确实体现了对js的掌握程度. 但是,从其他方面来说,这个代码是否就真的是很好的呢?作为一个曾经的半吊子acmer,效率恐怕是我最在意的东西了.那我们就来看下效率吧. 以下所有实验均基于nodej…
最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑. 数组去重的算法有很多种,以下是一种. 思路如下: 定义一个空的对象obj: 循环数组arr,判断obj[arr[i]]是否为false,如果是则将该数组元素放到result中,并且将obj[arr[i]]置为true: obj[arr[0]]肯定为false,因为obj为空,arr[0]将被放到result中,并且obj[arr[0]]被置为true: 循环的过…
以 var arr = [1,2,3,1]; 作为测试用例 方法一:双循环   (时间复杂度比较高,性能一般.) A.(1) function unique(arr) { var newArr = []; var len = arr.length; var isRepeat; for(var i=0; i<len; i++) { //第一次循环 isRepeat = false; for(var j=i+1; j<len; j++) { //第二次循环 if(arr[i] === arr[j]…