js中数组的每一项可以保存任何类型的数据,而且数组的大小是可以动态调整的,可以随数据的添加自动增长以容纳新数据。
创建数组有两种方法
var arr1 = newArray(); //创建一个空数组
var arr2 = newArray(20); // 创建一个包含20项的数组
var arr3 = newArray("lily","lucy","Tom"); // 创建一个包含3个字符串的数组
使用Array构造函数时也可以省略new操作符
在读取和设置数组的值时,要使用方括号并提供相应值的基于 0的数字索引
方括号中的索引表示要访问的值。如果索引小于数组中的项数,则返回对应项的值.
某个值的索引超过了数组现有项数,数组就会自动增加到该索引值加 1 的长度
JavaScript中数组的length属性是可以修改的。通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项
instanceof操作符的问题在于,它假定只有一个全局执行环境。
可以用Array.isArray()方法确定某个值到底是不是数组
if (Array.isArray(value)){
//对数组执行某些操作
}
队列方法
FIFO(First-In-First-Out,先进先出)。队列在列表的末端添加项,从列表的前端移除项。
shift()它能够移除数组中的第一个项并返回该项,同时将数组长度减1
结合使用shift()和push()方法,可以像使用队列一样使用数组。
unshift()与shift()的用途相反:它能在数组前端添加任意个项并返回新数组的长度。因此,同时使用unshift()和pop()方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项
reverse()方法会反转数组项的顺序
Function compare(value1,value2){
If (value1<value2){
return -1;
}
else if (value1>value2){
return 1;
}
else{
return 0;
}
}
arr2 =[13,24,51,3];
console.log(arr2.sort(compare)); //[3,13,24,51]
如果传递给concat()方法的是一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中。如果传递的值不是数组,这些值就会被简单地添加到结果数组的末尾.
slice(),它能够基于当前数组中的一或多个项创建一个新数组。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项— —但不包括结束位置的项。
slice()方法不会影响原始数组。如果slice()方法的参数中有一个负数,则用数组长度加上该数来确定相应的位置。如果结束位置小于起始位置,则返回空数组。
splice()
会返回一个数组,该数组中包含从原始数组中删除的项
删除:需指定 2 个参数:要删除的第一项的位置和要删除的项数
插入:需提供 3 个参数:起始位置、0(要删除的项数)和要插入的项
替换:需指定 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等
indexOf()lastIndexOf()
两个参数:要查找的项和(可选的)表示查找起点位置的索引。
indexOf()方法从数组的开头(位置 0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。
要求查找的项必须严格相等。会返回要查找的项在数组中的位置。
reduce()和 reduceRight()
这两个方法都会实现迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项。
这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。
传给 reduce()和 reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
toLocaleString()、toString()和valueOf()方法
调用数组的toString()方法和valueOf()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。toLocaleString()与前两个方法唯一的不同之处在于,这一次为了取得每一项的值,调用的是每一项的toLocale- String()方法,而不是toString()方法。
在默认情况下都会以逗号分隔的字符串的形式返回数组项。
迭代方法
5.map():指“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。