数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑下性能。以下方法,网上基本都有,这里只是简单地总结一下。 思路: 1.遍历数组,一一比较,比较到相同的就删除后面的 2.遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组 3.任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组。 4.遍历数组,取一个元素,作为对象的属性,判断属性是否存在 1. 删除后面重复的: function ov1(arr){ //var a1=((new Date).getTime()) for(var i=0 在JavaScript编程中,数组去重是一项基础且实用的操作,尤其在处理数据集合时。本文将详细介绍几种常见的数组去重方法,这些方法适用于同类型的数组,旨在优化思路并考虑执行性能。 1. **删除后面重复的**(ov1 函数): 这种方法通过两层循环实现,外层循环遍历数组,内层循环从当前元素的下一个元素开始,如果发现相同值,则删除该元素,然后减少内层循环的索引。返回排序后的结果数组。这种方法会改变原数组,且效率较低。 ```javascript function ov1(arr) { for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] === arr[j]) { arr.splice(j, 1); j--; } } } return arr.sort(function(a, b) { return a - b; }); } ``` 2. **常规方法**(ov2 函数): 此方法同样使用两层循环,但当发现重复值时,它会立即跳出内层循环,并将非重复值添加到新数组b中。最后返回排序后的结果数组。这种方法不会改变原数组,但效率相对较低。 ```javascript function ov2(a) { var b = []; for (var i = 0; i < a.length; i++) { var j; for (j = i + 1; j < a.length; j++) { if (a[i] === a[j]) { j = false; break; } } if (j) b.push(a[i]); } return b.sort(function(a, b) { return a - b; }); } ``` 3. **利用i值改变**(ov3 函数): 这种方法的特点在于,当发现重复值时,它会通过递增`j`来跳过后续的元素,而`i`值不变,相当于开始了新的循环。这种方法不会改变原数组,但逻辑较为复杂。 ```javascript function ov3(a) { var b = []; for (var i = 0; i < a.length; i++) { for (var j = i + 1; j < a.length; j++) { if (a[i] === a[j]) { j = ++i; } else { b.push(a[i]); } } } return b.sort(function(a, b) { return a - b; }); } ``` 4. **检查新数组中的唯一性**(ov4 函数): 这种方法通过遍历原数组并检查新数组`m`,如果新数组中不存在当前元素,则将其添加。这种方法保持了输入数组的原始顺序,但可能效率稍低。 ```javascript function ov4(ar) { var m = [], f; for (var i = 0; i < ar.length; i++) { f = true; for (var j = 0; j < m.length; j++) { if (ar[i] === m[j]) { f = false; break; } } if (f) m.push(ar[i]); } return m.sort(function(a, b) { return a - b; }); } ``` 5. **利用对象属性**(ov5 函数): 这种方法创建一个空对象`o`,将数组元素作为对象的属性。由于对象的属性不能重复,因此这种方法可以高效地去重。将对象的属性值转换回数组并排序。 ```javascript function ov5(ar) { var m = [], n = [], o = {}; for (var i = 0; (m = ar[i]) !== undefined; i++) { if (!o[m]) { n.push(m); o[m] = true; } } return n.sort(function(a, b) { return a - b; }); } ``` 总结而言,数组去重有多种实现方式,包括遍历比较、利用新数组、改变循环索引以及利用对象属性等。选择哪种方法取决于具体的需求,如是否需要保持原有顺序、是否允许修改原数组以及对性能的要求。在实际开发中,还可以结合使用Set数据结构,其天然具备去重功能,但请注意Set不支持旧版本的浏览器。
- 粉丝: 5
- 资源: 956
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 本资源库是关于“Java Collection Framework API”的参考资料,是 Java 开发社区的重要贡献,旨在提供有关 Java 语言学院 API 的实践示例和递归教育关系 .zip
- 插件: e2eFood.dll
- 打造最强的Java安全研究与安全开发面试题库,帮助师傅们找到满意的工作.zip
- (源码)基于Spark的实时用户行为分析系统.zip
- (源码)基于Spring Boot和Vue的个人博客后台管理系统.zip
- 将流行的 ruby faker gem 引入 Java.zip
- (源码)基于C#和ArcGIS Engine的房屋管理系统.zip
- (源码)基于C语言的Haribote操作系统项目.zip
- (源码)基于Spring Boot框架的秒杀系统.zip
- (源码)基于Qt框架的待办事项管理系统.zip