摘要:三种方法利用判断新数组中实际上也是使用的类似的传入数组如果当前数组的第已经保存进了临时数组,那么跳过,否则把当前项到临时数组里面利用判断旧数组结果数组如果当前数组的第项在当前数组中第一次出现的位置不是,那么表示第项是重复的,忽略掉。
三种方法 利用indexOf判断新数组
underscore.js中实际上也是使用的类似的indexOf
//传入数组 function unique1(arr){ var tmpArr = []; for(var i=0; i利用indexOf判断旧数组 function unique2(arr){ var tmpArr = []; //结果数组 for(var i=0; i利用hash查找 这里利用了JS对象的实现就是hash表的特性
function unique3(arr){ var tmpArr = [], hash = {};//hash为hash表 for(var i=0;i数组扩展 Array.prototype.unique1 = function (){ var tmpArr = []; for (var i = 0; i < this.length; i++){ if (tmpArr.indexOf(this[i]) == -1){ tmpArr.push(this[i]); } } return tmpArr; } Array.prototype.unique2 = function(){ var tmpArr = []; //结果数组 for(var i = 0; i < this.length; i++){ if (this.indexOf(this[i]) == i){ tmpArr.push(this[i]); } } return tmpArr; } Array.prototype.unique3 = function(){ var tmpArr=[], hash = {}; for(var i = 0; i < this.length; i++){ if (!hash[this[i]]){ hash[this[i]] = true; tmpArr.push(this[i]); } } return tmpArr; }使用SetSet和Map是ES6中新增的数据结构
Set直接可以存储不重复的一组key,这个key也可以是对象,字符串等
创建setvar s = new Set([1, 2, 3,]); s; // Set {1, 2, 3}新增元素>>> s.add(4) >>> s {1, 2, 3, 4} >>> s.add(4) >>> s {1, 2, 3, 4}//重复元素不会被添加删除元素s; // Set {1, 2, 3, 4} s.delete(3); s; // Set {1, 2, 4}遍历元素Map和Set无法使用下标
ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型
var s = new Set(["A", "B", "C"]); for (var x of s) { // 遍历Set alert(x); }或者直接使用iterable内置的forEach方法
forEach方法是ES5.1标准引入的
var s = new Set(["A", "B", "C"]); s.forEach(function (element, set) { alert(element); });参考文章最全前端面试问题
廖雪峰-Map和Set
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/85852.html
摘要:方法新特性方法利用对象名唯一方法利用数组包含方法排序比较兄弟元素方法双循环比较 方法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高性能数组...
阅读 2545·2023-04-26 01:44
阅读 2557·2021-09-10 10:50
阅读 1410·2019-08-30 15:56
阅读 2250·2019-08-30 15:44
阅读 512·2019-08-29 11:14
阅读 3416·2019-08-26 11:56
阅读 3018·2019-08-26 11:52
阅读 908·2019-08-26 10:27