zoukankan      html  css  js  c++  java
  • 学习笔记-javascript 数组

     许多东西四处搜索所得,有慕课网的学习笔记,有blog的大神原创,也有其他地方的引入,再以后会一一整理,为了加深自己的知识。

    (PS:没有粘贴的作者看到后可以留言让我加链接)

     

    一,使用数组

    1.1定义数组

    1 //定义一个空数组
    2 var testArr=new Array();
    3 //定义一个有n个空元素的数组
    4 var testArr=new Array(n);
    5 testArr[n+2]=11;
    6 //testArr.lenght就会增加3
    7 //直接初始化
    8 var  数组名 = [<元素1>, <元素2>, <元素3>...];
    9 //数组名[下标] = 值;下标只能是从0开始的整数。

    1.2使用数组

    1 var catArray=[1,2,43,65];
    2 catArray              //[1, 2, 43, 65]
    3 catArray[1]           //2
    4 catArray.length       //4
    5 
    6 for(x in catArray){
    7   console.log(catArray[x]);
    8 }
    9 //1  2  43  65

    1.3 检测类型

    1 typeof catArray //"object"
    2 Array.isArray(catArray)
    3 
    4 Array.isArray(catArray)  // true  通常用来检测数组

    二,常用技巧

    2.1数组合并

    1 var a=[1,2,3],b=[4,5,6];
    2 Array.prototype.concat(a,b);
    3 //[1, 2, 3, 4, 5, 6]

    2.2数组去重

     1 var arr=[2,3,7,54,4,399,6,7,4];
     2 var newArr=arr.sort(pop);
     3 var saveArray=[newArr[0]];
     4 
     5 for(var i=1;i<newArr.length;i++){
     6     if(newArr[i]!==newArr[i-1]){
     7       saveArray.push(newArr[i]);
     8     }
     9 }
    10 
    11 function pop(a,b){
    12     return a-b;
    13 }

    2.3字符串反序

    1 var tesss="i love you";
    2 tesss.split("").reverse().join("");
    3 //"uoy evol i"

     2.4 slice常用

    1     //call方法arguments可以使用数组的slice方法,参数是1的意思
    2     //因为arguments并不是真正的数组对象,只是与数组类似而已,所以它并没有slice这个方法,
    3     //Array.prototype.slice.call(arguments, 1)可以理解成是让arguments转换成一个数组对象,让arguments具有slice()方法。
    4     //要是直接写arguments.slice(1)会报错
    5     function test(a, b, c, d) {
    6         var arg = Array.prototype.slice.call(arguments, 1);
    7         console.log(arg);
    8     }
    9     test("a", "b", "c", "d");// ["b", "c", "d"]

     slice内部构造大概,引入 肥杜(http://www.cnblogs.com/littledu/archive/2012/05/19/2508672.html) 发表的代码,记录下

    1 Array.prototype.slice = function(start,end){
    2      var result = new Array();
    3      start = start || 0;
    4      end = end || this.length; //this指向调用的对象,当用了call后,能够改变this的指向,也就是指向传进来的对象,这是关键
    5      for(var i = start; i < end; i++){
    6           result.push(this[i]);
    7      }
    8      return result;
    9 }

    转数组通用方法

     1 var toArray = function(s){
     2     try{
     3         return Array.prototype.slice.call(s);
     4     } catch(e){
     5             var arr = [];
     6             for(var i = 0,len = s.length; i < len; i++){
     7                 //arr.push(s[i]);
     8                    arr[i] = s[i];  //据说这样比push快
     9             }
    10              return arr;
    11     }
    12 }
  • 相关阅读:
    Automatic overvoltage protection
    IDA Pro Disassembler 6.8.15.413 (Windows, Linux, Mac)
    J-Link GDB Server Command
    emSecure Use Digital Signatures to protect your products
    画时序图工具TimingDesigner 9.2 安装指导
    增益 Gain 分贝 dB
    How determine the RC time constant in PWM DAC low-pass filter?
    DAC Essentials
    Voltage Level-Shifter Output Waveform
    线性稳压器的基本类型
  • 原文地址:https://www.cnblogs.com/loveyatou/p/6555544.html
Copyright © 2011-2022 走看看