记录下js几种常见的数组排序和去重的方法
发布网友
发布时间:2022-04-22 23:28
我来回答
共1个回答
热心网友
时间:2022-04-07 06:21
js 数组去重
1
注:应该也可以适用于 object数组,但是本人没有进行验证,贴出来仅供你参考
第一种是比较常规的方法思路:1.构建一个新的数组存放结果2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比3.若结果数组中没有该元素,则存到结果数组中代码如下:
Array.prototype.unique1 = function(){ var res = [this[0]]; for(var i = 1; i < this.length; i++){ var repeat = false; for(var j = 0; j < res.length; j++){ if(this[i] == res[j]){ repeat = true; break; } } if(!repeat){ res.push(this[i]); } } return res;}var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]alert(arr.unique1());
第二种方法比上面的方法效率要高思路:1.先将原数组进行排序2.检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置3.如果不相同,则将该元素存入结果数组中代码如下:
Array.prototype.unique2 = function(){ this.sort(); //先排序 var res = [this[0]]; for(var i = 1; i < this.length; i++){ if(this[i] !== res[res.length - 1]){ res.push(this[i]); } } return res;}var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]alert(arr.unique2());
二种方法也会有一定的局限性,因为在去重前进行了排序,所以最后返回的去重结果也是排序后的。如果要求不改变数组的顺序去重,那这种方法便不可取了。第三种方法(推荐使用)思路:1.创建一个新的数组存放结果2.创建一个空对象3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。代码如下:
Array.prototype.unique3 = function(){ var res = []; var json = {}; for(var i = 0; i < this.length; i++){ if(!json[this[i]]){ res.push(this[i]); json[this[i]] = 1; } } return res;}var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];alert(arr.unique3());
js数组对象去重方法?
js去掉数组中重复的元素1、js数组去重的几种方法利用数组排序,通过相邻元素比较,去除重复元素,可以严格匹配以区分数据类型。借用对象属性方法,将数组中的元素添加为对象的属性。遍历数组元素的时候查询对象是否已经有该属性,如果有则不重复添加。2、可以使用双重循环,逐一对比元素,如有重复,则删除的方...
js 几种数组去重的方式
其次,可以使用`sort`方法对数组进行排序,然后遍历排序后的数组,删除重复元素。这种方法在处理大数据时效率不高,因为需要进行排序操作。接着,使用`for`循环进行去重。通过外层循环遍历数组元素,内层循环比较元素值,当发现重复值时,将其删除。这种方法实现简单,但效率较低,特别是当数组元素较多时。ES6...
JS数组去重(4种方法)
alert(ary);第二种方法是创建一个新数组,只添加不重复的元素,利用`indexOf`方法检查元素是否已存在:var ary=[1,2,3,3,2,3,4,5];var ary1=[];for(var i=0;i<ary.length;i++){ if(ary1.indexOf(ary[i])==-1){ ary1.push(ary[i]);} } alert(ary1);第三种方法是借助对象...
js数组去重(4种方法)
JS数组去重的四种方法:方法一:使用Set数据结构去重 方法二:使用双重遍历法去重 方法三:利用Array的indexOf方法去重 方法四:使用filter方法结合条件判断去重 详细解释:方法一:使用Set数据结构去重 Set是ES6引入的一种新的数据结构,它类似于数组,但Set中的元素都是唯一的,没有重复值。利用Set的特性...
JS数组去重的几种常见方法
第一种是比较常规的方法思路:1.构建一个新的数组存放结果2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比3.若结果数组中没有该元素,则存到结果数组中代码如下:Array.prototype.unique1 = function(){ var res = [this[0]]; for(var i = 1; i < this.length; i++...
JS数组去重总结
数组去重是编程中常见操作,本文总结了十一种常见的去重方法,以供参考。首先,使用ES6 Set进行去重,代码简洁,但无法处理空对象。其次,运用双层for循环和splice方法进行去重,适用于ES5环境,但效率不高。利用indexOf方法创建结果数组,判断原数组元素是否已存在,避免重复。借助sort方法进行排序后遍历并比较...
js数组去重的5种算法实现
排序后相邻去除法则利用排序使重复值相邻,便于逐个排除。最后,优化的遍历数组法通过双重循环检测重复,实现简洁但效率较高。在实际使用时,需根据具体需求和浏览器兼容性选择合适的方法。对于不支持ECMAScript5的indexOf方法的浏览器,如IE8及其以下版本,可以使用自定义的indexOf实现。总的来说,这五种...
JS删除数组重复元素有哪些方法
这里就 js 如何实现数组去重整理出5种方法,并附上演示Demo 以及 源码。1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码...
js中数组去重方法总结
1.es6有了Set,可以通过成员唯一性去重 2.使用数组对象的lastIndexOf()方法。(关于lastIndexOf():( https://www.jianshu.com/p/d75886bc6c75 )3.定义新数组,存入原数组第一个元素,再将原数组元素和新数组元素比较,不同的继续push到新数组。4.splice()方法从数组中添加/删除重复值。5.使用...
JS 中常见的几种去重方法
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素 indexOf ( searchvalue, fromindex ) searchvalue :必填值,规定需检索的字符串值 fromindex :选填值,规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。 如省略该...