zoukankan      html  css  js  c++  java
  • js数组操作-数组去重

    第一个和第二个,都是对新数组或新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());
  • 相关阅读:
    一百一十五:CMS系统之实现点击更换图形验证码功能
    python用cx_Oracle连接oracle
    一百一十四:CMS系统之图形验证码生成
    一百一十三:CMS系统之前台注册界面
    一百一十二:CMS系统之前台用户模型
    一百一十一:CMS系统之后端权限验证功能
    前端开发之JavaScript HTML DOM理论篇二
    前端开发之JavaScript HTML DOM理论篇一
    前端开发之JavaScript基础篇四
    前端开发之JavaScript基础篇三
  • 原文地址:https://www.cnblogs.com/manchun/p/4567174.html
Copyright © 2011-2022 走看看