数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑执行性能。
for循环删除后面重复的
var uniqueFor = function(arr) {
for (var i = 0; i < arr.length - 1; i++) {
var item = arr[i];
for(var j = i+1; j < arr.length; j++ ) {
item === arr[j] && (arr.splice(j, 1), j--);
}
};
return arr;
};
判断对象属性
var uniqueObject = function(arr) {
var v, r = [], o = {};
for(var i = 0; (v = arr[i]) !== undefined; i++) {
!o[v] && (r.push(v), o[v] = true);
}
return r;
};
数组过滤重复项filter
var uniqueFilter = function(arr) {
return arr.filter(function(elem, pos, self) {
// 如果没有重复项,返回true
return self.indexOf(elem, pos + 1) === -1;
});
};
比较执行效率
图1 chrome浏览器
图2 firefox浏览器
图3 IE10浏览器
参考文献
http://jsperf.com/quchong/5
http://www.nowamagic.net/javascript/js_RemoveRepeatElement.php
http://blog.segmentfault.com/fishenal/1190000000418858
分类:
javascript
, Javascript基础
标签:
javascript
, 性能优化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 7 个最近很火的开源项目「GitHub 热点速览」
· DeepSeekV3:写代码很强了
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· Visual Studio 2022 v17.13新版发布:强化稳定性和安全,助力 .NET 开发提
· 让 AI 对接 MySQL 数据库实现快速问答对话