js给数组去重写法
2024-10-11 08:31:23
数组为 var list =['A','B','A']; 法一:常规做法,新建list,给list添加元素,添加前判断是否包含
var removeRepeatItem = function(list){
var newList = [];
for(var i=0;i<list.length;i++){
if(newList.indexOf(list[i])==-1){ //不包含
newList.push(list[i]);
}
}
return newList;
} 法二、两次遍历同一数组,比对是否相同,先排除比对自己,然后对相同的后者删除,同时使数组的大小减一 var removeRepeatItem = function(list) {
var listLen = list.length;
for(var i=0;i<listLen;i++){
for(var j=0;j<listLen;j++){
if(i!=j){ //不跟自己比较
if(list[i]==list[j]){
list.splice(j, 1);//删除后者
listLen--; //同时遍历次数减一
}
}
}
}
return list;
} 法三、利用对象键唯一的原理,将数组元素的值作为对象的键名称(或者键名称的一部分),元素的值作为相应键的值,这样便得到了新的对象。
var removeRepeatItem = function(list) {
var newList = [],
temp = {};
//数租 => 对象 (利用键唯一原理去重)
for (var i = 0; i < list.length; i++) {
temp[typeof(list[i]) + list[i]] = list[i];
}
//对象 => 数组
for (var j in temp) {
newList.push(temp[j]);
}
return newList;
}
最新文章
- Unity Animator动画状态机 深入理解(二)IK控制
- 迈出物联网的第一步,玩儿一下Arduino
- expect工具的简单用法
- LightOJ1060 nth Permutation(不重复全排列+逆康托展开)
- RTSP交互命令简介及过程参数描述
- Java API —— Map接口
- PHP中foreach循环详解
- [topcoder]BestRoads
- 面向对象CSS (OOCSS)
- Android EditText屏蔽默认长按粘贴复制事件
- 不要伤害指针(5)--void和void指针详解
- [站点部署_01]wordpress建站网页响应速度慢
- c# Invoke和Begininvoke区别
- Java设计模式(五)Prototype原型模式
- ionic3 小记录
- lua模块demo(redis,http,mysql,cjson,本地缓存)
- 一个列转行SQL示例(wm_concat函数和replace函数合用)
- Python学习(25):Python执行环境
- 同步 Visual Studio Code 的设置与插件
- 【转】高效率编辑器VIM
热门文章
- 特殊的数据类型: bit、sql_variant、sysname
- 聊聊ASP.NET Core默认提供的这个跨平台的服务器&mdash;&mdash;KestrelServer
- SQL Server-聚焦EXISTS AND IN性能分析(十六)
- 从xfire谈WebService接口化编程
- 我的EF功能
- 从express源码中探析其路由机制
- Node学习笔记(三):基于socket.io web版你画我猜(二)
- html+ccs3太阳系行星运转动画
- 【C#】给无窗口的进程发送消息
- C#开发微信门户及应用(36)--微信卡劵管理的封装操作