JavaScript数组

JavaScript数组


数组(Array)

  数组也是对象(内建对象

  它和我们普通对象功能类似,也是用来存储一些值的

  不同的是普通对象使用字符串作为属性名

  而数组是使用数字来作为索引操作元素

 索引:

从0开始的整数就是索引

  数组的存储性能比普通对象要好,在开发中我们经常使用数组来存储一些数据

 

向数组中添加元素

语法:数组[索引] = 值

例如:arr[0]=12;

 

读取数组中的元素

语法:数组[索引]

如果读取不存在的索引,不会报错而是返回undefined

例如:console(arr[0]);

 

获取数组的长度,可以使用length这个属性获取

语法:数组.length

对于连续的数组,使用length可以获取到数组的长度(元素的个数)

对于非连续的数组,使用length汇获取到数组的最大的(索引+1)

尽量不要创建非连续数组

例如:console.log(arr.length);

 

修改length

 如果修改的length大于原长度,则多出部分会空出来

 如果修改的length小于原长度,则多出的部分会被删除

JavaScript数组字面量

  1. 使用字面量创建数组时,可以在创建时就指定数组中的元素
  2. 使用构造函数创建数组时,也可以同时添加元素,将要添加的元素作为构造函数的参数传递,元素之间使用 , 隔开
  3. 数组的值可以是任意的数据类型,包含对象的
  4. 数组中可以存放函数
  5. 二维数组

  例如: var arr8=[

    [1,3,4,5],

    [1,4,6,7]

     ];

  console.log(arr8[1][2]);

 

JavaScript数组的方法

把数组的所有元素串联成一个字符串。元素通过指定的分隔符进行分隔

例如: var str=arr.join("~~");

 

1.push()

 该方法可以向数组的末尾添加一个或多个元素,并返回数组的新的长度

 可以将要添加的元素作为方法的参数传递,这样这些元素将会自动添加到数组的末尾

 该方法会将数组新的长度作为返回值返回

 

例如:var num=arr.push("小白","小黑");

          console.log(num);//5

          console.log(arr);

2.pop()

 - 该方法可以删除数组的最后一个元素,并将被删除的元素作为返回值返回

 

例如:var result=arr.pop();

          console.log("result="+result);

          console.log(arr);

3.unshift()

 向数组开头添加一个或多个元素,并返回新的数组长度

 向前边插入元素以后,其他元素的索引会依次调整

例如:var num=arr.unshift("小白","小黑");

          console.log("num="+num);

          console.log(arr);

4.shift()

 可以删除数组的第一个元素,并将被删除的元素作为返回值返回

  可以重复使用

例如:arr.shift();

          arr.shift();

          arr.shift();

          arr.shift();

         console.log(arr);

JavaScript数组的遍历

所谓的遍历数组,就是将数组中所有的元素都取出来

 

创建一个函数,可以将arrPerson中年满18岁的Person提取出来,然后封装到到一个新的数组并返回

function Person(name,age){

      this.name=name;

      this.age=age;

}

   var p1=new Person("小红",12);

   var p2=new Person("小橙",17);

   var p3=new Person("小黄",19);

   var p4=new Person("小绿",32);

   var p5=new Person("小青",22);

   var p6=new Person("小蓝",24);

   var p7=new Person("小紫",42);

   var arrPerson=[p1,p2,p3,p4,p5,p6,p7];


法1:function getAdult(arr){

  var arrAdult=[];

  for(var i=0;i<arr.length;i++){

//如果年满18,就把该对象添加到arrAdult数组中

  if(arr[i].age>=18){

     arrAdult.push(arr[i]);

     }

   }

    return arrAdult;

  }

法2:function getAdult1(arr){

    var arrAdult=[];

    for(var o in arr){

       console.log(arr[o]);

      //如果年满18,就把该对象添加到arrAdult数组中

     if(arr[o].age>=18){

          arrAdult.push(arr[o]);

         }

     }

    return arrAdult;

 }

JavaScript数组的遍历foreach

一般我们都是使用for循环去遍历数组,

JS中还为我们提供了一个方法,用来遍历数组

forEach()

 这个方法只支持IE8以上的浏览器

IE8及以下的浏览器均不支持该方法,所以如果需要兼容IE8,则不要使用forEach

如果考虑到兼容问题还是使用for循环

forEach()方法需要一个函数作为参数

 像这种函数,由我们创建但是不由我们调用的,我们称为回调函数

 数组中有几个元素函数就会执行几次,每次执行时,浏览器将会遍历到的元素以实参的形式传递进来,我们可以来定义形参读取这些内容

 浏览器会在回调函数中传递三个参数:

第一个参数,就是当前正在遍历的元素

第二个参数,就是当前正在遍历的元素的索引

第三个参数,就是正在遍历的数组

arr.forEach(function(value,index,obj){

         console.log(value);

         console.log(index);

         console.log(obj);

});

JavaScript函数的方法apply与call

call()与apply()

 这两个方法都是函数对象的方法,需要通过函数对象来调用

 当对函数调用call()和apply()都会去调用函数执行

 在调用call()与apply()可以将一个对象指定为第一个参数

此时这个对象将会成为函数执行时的this

 call()方法可以将实参在对象之后依次传递

 apply() 方法需要将实参封装到一个数组中统一传递

例如:function fun1(a,b){

            console.log("a="+a+",b="+b);

            console.log(this);

        }

     fun1(12,34);

     fun1.call(obj,12,34);

     fun1.apply(obj,[12,34]);

this的总结:

1.以函数的形式调用时,this始终都是window对象

2.以方法的形式调用时,this就是调用方法的对象

3.以构造方法的形式调用时,this是新创建的那个对象

4.使用call与apply调用时,this是指定的那个对象

 

JavaScript_arguments

在调用函数时,浏览器每次都会传递进来两个隐含的参数:

1.函数的上下文对象 this

2.封装实参的对象arguments

 arguments是一个类数组对象,它也可以通过索引来操作数组,也可以获取长度

 在调用函数时,我们所传递的实参都会在arguments中保存

 arguments.length可以用来获取实参的长度

 我们即使不定义形参,也可以通过arguments来使用实参,比较麻烦

arguments[0] 表示第一个实参

arguments[1] 表示第二个实参

 它里面有一个属性叫做callee,

这个属性对应一个函数对象,就是当前正在执行的函数对象

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可乐沙司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值