js中数组去除重复项目
2016-06-07 10:51
260 查看
js语法技巧:if(a>=5)alert();可以改写成下边语句:a>=5&&alert();在下文中会用到这种写法
这个方法效率最高,执行结果是先删除前边的,可以改下方法体倒序查询,就可以从后边开始删除了,请感兴趣的读者自己动手实验
这个方法是通过将数组项目设置为o的属性后,查找属性中是否存在来进行筛选删除的,删除的是数组中靠后的重复项的,改下循环顺序可以删除靠前便的,不过最后还要颠倒一下数组
这个方法是从前边的重复项开始删除的。如果要从后边开始删除,那么删除前线颠倒一下数组吧,删除完毕后再次颠倒回来。
上文中的代码块可以直接复制粘贴到chrome控制台执行查看结果
补充知识点:
内容来自MSDNhttps://msdn.microsoft.com/library/ff679973%28v=vs.94%29.aspx?f=255&MSPPError=-2147217396
当回调函数返回false时候,对应的项目会被删除
//for循环删除后面重复的速度最快,可用倒序计算可加快速度 varuniqueFor=function(arr){ for(vari=0;i<arr.length-1;i++){ varitem=arr[i]; for(varj=i+1;j<arr.length;j++){ item===arr[j]&&(arr.splice(j,1),j--); } }; returnarr; };
uniqueFor([1,3,5,5,4,5,6,7,8,2,3])
这个方法效率最高,执行结果是先删除前边的,可以改下方法体倒序查询,就可以从后边开始删除了,请感兴趣的读者自己动手实验
//判断对象属性
varuniqueObject=function(arr){
varv,r=[],o={};
for(vari=0;(v=arr[i])!==undefined;i++){
//v取出数组中的一个元素
//如果o的元素中不包含v属性,则将元素存储到r中,并设置o[]=true
!o[v]&&(r.push(v),o[v]=true);
}
returnr;
};
uniqueObject([1,3,5,5,4,5,6,7,8,2,3])
这个方法是通过将数组项目设置为o的属性后,查找属性中是否存在来进行筛选删除的,删除的是数组中靠后的重复项的,改下循环顺序可以删除靠前便的,不过最后还要颠倒一下数组
//数组过滤重复项filter
varuniqueFilter=function(arr){
returnarr.filter(function(elem,pos,self){
//如果没有重复项,返回true,返回false的是有对应的elem会被删除
returnself.indexOf(elem,pos+1)===-1;
});
};
uniqueFilter([1,3,5,5,4,5,6,7,8,2,3])
这个方法是从前边的重复项开始删除的。如果要从后边开始删除,那么删除前线颠倒一下数组吧,删除完毕后再次颠倒回来。
上文中的代码块可以直接复制粘贴到chrome控制台执行查看结果
补充知识点:
array1.filter(callbackfn[,thisArg])
如果callbackfn参数不是函数对象,则将引发TypeError异常
参数 | 定义 |
---|---|
array1 | 必需。一个数组对象。 |
callbackfn | 必需。一个接受最多三个参数的函数。对于数组中的每个元素,filter方法都会调用callbackfn函数一次。 |
thisArg | 可选。可在callbackfn函数中为其引用this关键字的对象。如果省略thisArg,则undefined将用作this值。 |
当回调函数返回false时候,对应的项目会被删除
相关文章推荐
- js 与或运算符 || && 妙用
- js模态弹窗
- javascript基础知识
- Gson解析json数据
- 【JS设计模式】责任链模式的代码示例
- 【转】JavaScript 正则表达式上——基本语法
- js拼字符串传action时 不要用#号拼接,用逗号
- javascript基础语法——表达式
- 客户端js判断文件类型和文件大小即限制上传大小
- JavaScript实现九九乘法表的简单实例
- javascript如何定义对象数组
- 在JavaScript中创建命名空间的几种写法
- js判断为空Null与字符串为空实例
- js判断输入的数据是否是正整数,包括100.00(100.000)
- JavaScript_compare_C++_部分类似处
- JSON对象遍历和处理
- 以.jsp和.html作为后缀的不同
- javascript函数作用域和嵌套调用关系
- ExtJs6 grid中根据返回数据结果动态添加checkcolumn组件
- js Date 获取 年 月 日 具体的值