JS学习笔记——数组去重
<script type="text/javascript"> //indexOf”是ECMAScript5方法,IE8以下不支持,需多写兼容低版本浏览器代码。 Array.prototype.indexOf=Array.prototype.indexOf|| function(item){ for(var i=0;i<this.length;i++) { if(this[i]===item) { return i; } } return -1; } var obj={ name:'312' } function newobj(){ } var a=[0,0,new String(1), new Number(1),obj,obj,new newobj(),new newobj()]; Array.prototype.forEach = Array.prototype.forEach || function(callback, thisArg) { if (!callback || typeof callback !== 'function') return; for (var i = 0, j = this.length; i < j; i++) { callback.call(thisArg, this[i], i, this); } } function removeDuplicatedItem1(arr) { var ret=[]; for(var i=0;i<arr.length;i++) { if(ret.indexOf(arr[i])===-1) { ret.push(arr[i]); } } return ret; } // 0 1 1 [object object] [object object ][object object] function removeDuplicatedItem2(arr) { var ret=[]; arr.forEach(function(e,i,arr){ if(arr.indexOf(e)===i) ret.push(e); }); return ret; } //// 0 1 1 [object object] [object object ][object object] function removeDuplicatedItem3(ar) { var ret = [], end; ar.sort(); end = ar[0]; ret.push(ar[0]); for (var i = 1; i < ar.length; i++) { if (ar[i] !== end) { ret.push(ar[i]); end = ar[i]; } } return ret; }// 0 1 1 [object object] [object object ][object object] //上述都做了两次循环 因此需要优化 function removeDuplicatedItem4(arr)//unique([ new String(1), new Number(1) ]) 无法判断 { var tem={}; var ret=[]; for(var i=0;i<arr.length;i++) { var item=arr[i]; var key=typeof(item)+item; //因为对象只能存放字符串,所以要区分 1 '1' if(!tem[key]) { tem[key]=1; ret.push(item); } } return ret; } //0 1 [object object] </script>
标签:
JS学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?