数组的数据是有序的,对象的数据是无序的
5.1 数组的操作
-
创建数组
var arr = new Array();向数组中添加元素
arr[0] = 123; arr[1] = "hello";如果读取不存在的索引,不会报错,会返回undefined
-
数组的长度:
数组名.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 = 0; i < arr.length; i++ ){
//输出元素
}
创建一个函数,可以将perArr中满18岁的Person提取出来
然后封装到一个新的数组中并返回
使用forEach()方法遍历(不兼容IE8)
这种函数,由我们创建但不是我们调用的,我们称为回调函数
数组中有几个元素函数就执行几次,每次执行时,浏览器会将遍历到的元素
以实参的形式传递进来,我们可以定义形参,来拂去这些内容
有3个参数:(必需,当前元素;可选,当前元素索引值;可选,当前元素所属数组对象)
test.forEach(function(currentValue, index, arr) {
console.log("currentValue=" +currentValue);
console.log("index=" +index);
console.log("arr=" +arr);
});