zoukankan      html  css  js  c++  java
  • 数组常用操作

    1、shift():删除数组的第一个元素,返回删除的值。
    2、unshift():把参数加载数组的前面,返回数组的长度。
    3、pop():删除数组的最后一个元素,返回删除的值。
    4、push():将参数加载到数组的最后,返回数组的长度。
    5、concat():把两个数组拼接起来,不改变原始数组,返回新的数组。 
    6、splice(start,deleteCount,val1,val2,...)从start位置开始删除deleteCount项,并从该位置起插入val1,val2,... 
    7、reverse()将数组反序 
    8、sort(orderfunction)按指定的参数对数组进行排序 
    9、slice(start,end)返回从原数组中指定开始下标到结束下标之间的项组成的新数组 
    10、join(separator):将数组的元素组起一个字符串,以separator为分隔符,默认逗号 
    11、toString()把数组转换为字符串,并返回结果。
     
    合并数组的几种方式
    1、concat()
    var num1 = [1, 2, 3];
    var num2 = [4, 5, 6];
    var num3 = [7, 8, 9];
    // 组成新数组[1, 2, 3, 4, 5, 6, 7, 8, 9]; 原数组 num1, num2, num3 未被修改 var nums = num1.concat(num2, num3);

    2、循环合并

    for (var i=0; i < b.length; i++) {
        a.push( b[i] );
    }
    

    3、apply

    var merge = function() { 
    	return Array.prototype.concat.apply([], arguments)   
    } 
    merge([1,2,4],[3,4],[5,6]);//[1, 2, 4, 3, 4, 5, 6]
    

    4、去重复

    var arr1 = ['a'];
    var arr2 = ['b', 'c'];
    var arr3 = ['c', ['d'], 'e', undefined, null];
    
    var concat = (function(){
      // concat arr1 and arr2 without duplication.
      var concat_ = function(arr1, arr2) {
        for (var i=arr2.length-1;i>=0;i--) {
          arr1.indexOf(arr2[i]) === -1 ? arr1.push(arr2[i]) : 0;
        }
      };
      // concat arbitrary arrays.
      // Instead of alter supplied arrays, return a new one.
      return function(arr) {//arr1通过参数传递,arr2.arr3通过arguments获取
        var result = arr.slice();
        for (var i=arguments.length-1;i>=1;i--) {
          concat_(result, arguments[i]);
        }
        return result;
      };
    }());
    
    concat(arr1, arr2, arr3);//[ 'a', null, undefined, 'e', [ 'd' ], 'c', 'b' ]
    

    5、处理undefined和null

    这里的undefined可能由数组本身存在的undefined元素引起,也可能由于delete引起。

    var concat = (function(){
      // concat arr1 and arr2 without duplication.
      var concat_ = function(arr1, arr2) {
        for (var i=arr2.length-1;i>=0;i--) {
    *      if (arr2[i] === undefined || arr2[i] === null) {
    *        continue;
    *      }
          arr1.indexOf(arr2[i]) === -1 ? arr1.push(arr2[i]) : 0;
        }
      };
      // concat arbitrary arrays.
      // Instead of alter supplied arrays, return a new one.
      return function(arr) {
        var result = arr.slice();
        for (var i=arguments.length-1;i>=1;i--) {
          concat_(result, arguments[i]);
        }
        return result;
      };
    }());
    
    concat(arr1, arr2, arr3);//[ 'a', 'e', [ 'd' ], 'c', 'b' ]
    delete arr3[2]; concat(arr1, arr2, arr3);//[ 'a', [ 'd' ], 'c', 'b' ]
    

    6、扁平化

    var concat = (function(){
      // concat arr1 and arr2 without duplication.
      var concat_ = function(arr1, arr2) {
        for (var i=arr2.length-1;i>=0;i--) {
    *      // escape undefined and null element
    *      if (arr2[i] === undefined || arr2[i] === null) {
    *        continue;
    *      }
    *      // recursive deal with array element
    *      // can also handle multi-level array wrapper
    *      if (classof(arr2[i]) === 'Array') {
    *        for (var j=arr2[i].length-1;j>=0;j--) {
    *          concat_(arr1, arr2[i][j]);
    *        }
    *        continue;
    *      }
          arr1.indexOf(arr2[i]) === -1 ? arr1.push(arr2[i]) : 0;
        }
      };
      // concat arbitrary arrays.
      // Instead of alter supplied arrays, return a new one.
      return function(arr) {
        var result = arr.slice();
        for (var i=arguments.length-1;i>=1;i--) {
          concat_(result, arguments[i]);
        }
        return result;
      };
    }());
    concat(arr1, arr2, arr3)//[ 'a', 'd', 'c', 'b' ]
    

      

  • 相关阅读:
    安装配置ZooKeeper及基本用法
    关于SqlServer数据库数据备份失败的问题
    input 框自动检测输入是否为数字
    nginx配置负载均衡
    nginx日志文件的配置
    nginx的proxy模块详解以及参数
    nginx配置反向代理
    正向代理和反向代理
    Linux建立虚拟ip的方法
    nginx基于ip的虚拟主机
  • 原文地址:https://www.cnblogs.com/chenlogin/p/4749372.html
Copyright © 2011-2022 走看看