【懿瑾】JS的学习笔记⑤-Array数组

83 阅读4分钟

数组的数据是有序的,对象的数据是无序的

5.1 数组的操作

  1. 创建数组

     var arr = new Array();
    

    向数组中添加元素

     arr[0] = 123;
     arr[1] = "hello";
    

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

  2. 数组的长度:

    数组名.length

    对于非连续的数组,会获取到数组最大的索引+1

    中间没有的元素都是undfined

    Length可以被修改

    总向最后一个位置添加元素

     arr[arr.length] = "Finally";
    

    创建数组时直接添加元素

     var test = ["Tom","Jack",23,45];
    

  数组内可以存任何数据类型,可以存对象,可以存函数

5.2 数组的方法

5.2.1 Push()方法

向数组的末尾添加一个或多个元素,并返回数组的最新长度

 var test = ["Tom","Jack",23,45];
 var result = test.push("Tang","Li");    //6

5.2.2 pop()方法

删除数组的最后一个元素并返回删除的元素。

 var test = ["Tom","Jack",23,45];
 var result = test.pop();
 console.log(result);            //45
 console.log(test);              //['Tom', 'Jack', 23]

5.2.3 unshift()方法

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

 var test = ["Tom","Jack",23,45];
 var result = test.unshift("Chen","Zhao");
 console.log(result);    //6
 console.log(test);      //['Chen', 'Zhao', 'Tom', 'Jack', 23, 45]

5.2.4 shift()方法

删除并返回数组的第一个元素。

var result = test.shift();

5.2.5 slice()方法

选取数组的一部分,并返回一个新数组。

参数描述
start可选。规定从何处开始选取。 如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
end可选。规定从何处结束选取。 该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。 如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
 var test = ["Tom","Jack",23,45,"Chen"];
 var result = test.slice(-3,-1);     // [23, 45]

5.2.6 splice()方法

从数组中添加或删除元素。

它的返回值是被删除的元素。

参数描述
index必需。规定从何处添加/删除元素。 该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
howmany可选。规定应该删除多少元素。必须是数字,但可以是 "0"。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item1, ...,itemX可选。要添加到数组的新元素
 var test = ["Tom","Jack",23,45,"Chen"];
 test.splice(2,1);       //删除下标为2的元素
 test.splice(2,1,"Zhao","Sun"); //删除下标为2的元素,从2开始添加两个元素

5.2.7 filter()方法

该方法不会改变原数组。

该数组有两个参数

第一个是函数并且数组中每个元素都会执行这个函数

这个函数共有三个参数

第一个为必填当前元素的值,

第二个为可选,当前元素的索引值。

第三个可选,当前元素属于的数组对象。

第二个是回调函数对象作为该执行回调时使用,传递给函数,用作 "this" 的值。

如果省略了 thisValue ,"this" 的值为 "undefined"。

把arr数组的所有值都添加到了obj对象的sum属性上,并且把arr中所有大于1的值赋值给了arr1数组。

 let arr =[1,2,3,4,5,6,7,8];
 let obj ={
     name: '123',
     age: 12,
     sum: 100
 }
 ​
 let arr1 = arr.filter((value, index, arr) => {
     obj.sum += value;
     return value > 1;
 }, obj);
 ​
 console.log(obj);
 console.log(arr1);

5.2.8 sort()方法

用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列时构建的

返回值:

排序后的数组。请注意,数组已原地排序,并且不进行复制。

5.3 遍历数组

遍历数组就是将数组中元素都获取到

一般情况我们都是使用for循环来遍历数组

 for(var i = 0i < arr.lengthi++ ){
     //输出元素
 }

创建一个函数,可以将perArr中满18岁的Person提取出来

然后封装到一个新的数组中并返回

数组练习

使用forEach()方法遍历(不兼容IE8)

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

数组中有几个元素函数就执行几次,每次执行时,浏览器会将遍历到的元素

以实参的形式传递进来,我们可以定义形参,来拂去这些内容

有3个参数:(必需,当前元素;可选,当前元素索引值;可选,当前元素所属数组对象)

 test.forEach(function(currentValue, index, arr)  {
     console.log("currentValue=" +currentValue);
     console.log("index=" +index);
     console.log("arr=" +arr);
 });