js中数组的去重
来源:互联网 发布:mac如何隐藏下面的菜单 编辑:程序博客网 时间:2024/05/21 21:01
js对象有一个特性:
js中对象的key(属性名)是永远不会重复的!
js数组去重
方法一:
//将数组arr去掉重复的值var arr = [3,1,5,1,23,5,11];//1.把数组元素转换成对象属性function toObject(arr){var obj = {};var j;for(var i=0,j=arr.length;i<j;i++){obj[arr[i]] = true; //利用js对象属性名不会重复的特性,将数组元素设置为对象属性//console.log(obj);}return obj;}//2.把对象属性转换回新数组元素function toArray(obj){var arr = [];for(var attr in obj){if(obj.hasOwnProperty(attr)){arr.push(attr);}}return arr;}//去重函数function uniq(arr){return toArray(toObject(arr));}alert(uniq(arr));以上时雅虎yui的一段源码,但是我测试的时候结果是[1,3,5,11,23],obj对象在设置属性的时候进行了自动排序,我暂时还不知道是什么原因。
方法二:
下面是网上查的一个方法,原理应该跟上面是一样的
var arr = [3,1,5,1,23,5,11];function uniq(arr){var obj = {}, newArr = []; //空对象和新数组for(var i=0;i<arr.length;i++){if(!obj[arr[i]]){obj[arr[i]] = true;newArr.push(arr[i]);}}return newArr;}alert(uniq(arr)) //[3,1,5,23,11]
方法三:
利用indexOf()function uniq(arr){var newArr = [];for(var i=0;i<arr.length;i++){if(newArr.indexOf(arr[i])==-1){ //js在执行indexOf方法时会遍历数组直到找到,会耗费很多时间newArr.push(arr[i]);}}return newArr;}alert(uniq(arr))indexOf()效率并不高
0 0
- js中数组的去重
- js中数组去重的方法
- js中实现数组去重的5种方法
- js中数组去重的几种方法
- js中数组去重的常用方法
- js中数组元素去重
- JS中数组去重问题
- JS中数组对象去重
- js数组中对象去重
- JS原生中数组去重
- JS 数组去重
- js数组去重
- js 数组去重
- js 数组去重
- js数组去重
- js 数组去重
- js数组去重
- JS 数组去重
- C++之:对象的静态类型和动态类型
- Context那些事儿
- ubuntu安装flash插件
- JQuery datatable
- setsockopt结构体分析
- js中数组的去重
- EasyUI学习笔记8:MIS开发利器_ datagrid插件(下)(终结篇)
- leetcode_Roman to Integer
- C# 删除时弹出提示框操作
- 云 + 端并重,柚子科技 APICloud 要做传统服务 B/S 架构到 Apps 转型的催化剂
- 用jQuery判断页面元素是否存在的方法
- 解决IllegalStateException: Can not perform this action after onSaveInstanceState
- Android详细的对话框AlertDialog.Builder小示例
- 2015 多校联赛 ——HDU5373(模拟)