js数组操作-数组去重
2015-06-10 20:05
489 查看
第一个和第二个,都是对新数组或新json进行操作,而第三个是对原数组本身进行indexOf。 第一个是用新数组的indexOf来判断是否有重复元素,而第二个是通过nHash[item]来判断是否存在。
var array = [1, 2, 3, 2, 1]; Array.prototype.unique1 = function () { var nArray = []; // 新建一个数组 console.log(this, 'this的值'); for (var i = 0, len = this.length; i < len; i++) { //遍历当前数组 var item = this[i]; //如果当前数组的第i没有保存在临时数组中,那么将当前项push到临时数组里面 if ( nArray.indexOf(item) == -1 ) { // 数组通过通过indexOf()来判断这个item是否存在这个新数组中 nArray.push(item); }; }; return nArray; // 返回这个新数组 } console.log(array, array.unique1()); var array2 = [1, 2, 3, 2, 1]; Array.prototype.unique2 = function() { var nArray = [], nHash = {}; // n为hash表,r为临时数组 for (var i = 0, len = this.length; i < len; i++) { var item = this[i]; console.log(nHash[item]); // undefined 3, true 2 if (!nHash[item]) { // 如果hash表中没有当前项 对象通过nHash[item]即value为undefined || true来判断是否存在。 nHash[item] = true; // 存入hash表 nArray.push(item); //把当前数组的当前项push到临时数组里面 }; }; return nArray; }; console.log(array2.unique2()); var array3 = [1, 2, 3, 2, 1]; Array.prototype.unique3 = function() { var nArray = []; nArray.push(this[0]); for (var i = 1, len = this.length; i < len; i++) { // 从一开始减少一次循环,从第二项开始遍历 var item = this[i]; if (this.indexOf(item) == i) { // 对原数组自身进行操作 //如果当前数组的第i项在当前数组中第一次出现的位置不是i, //那么表示第i项是重复的,忽略掉。否则存入结果数组 nArray.push(item); }; }; return nArray; }; console.log(array3.unique3());
相关文章推荐
- scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据
- js中SetInterval与setTimeout用法
- JSON解析---初识
- JS实现简单的图片轮换效果
- javascript日期格式相减,计算出天数
- 动态网页爬取例子(WebCollector+selenium+phantomjs)
- javascript splice()插入、删除或替换数组
- echarts.js使用方法
- JavaScript 自定义对象
- 我所了解的javaScript细节
- JS中需要注意的知识点
- [技巧篇]00.TrimFilter去掉jsp页面空白,提升访问速度
- JS事件
- JavaScript中清空数组的三种方式
- js 继承
- JS操作DOM元素属性和方法(转)
- JavaScript 正则表达式上——基本语法
- javascript 全选 反选 js代码
- js中substring和substr的用法
- JS操作select下拉框动态变动(创建/删除/获取)