关于数组
数组定义
第一种方法:使用 Array 构造函数 ,可以省略 new 操作符
eg:
let arr = new Array()
let arr = new Array(20) 数组长度为20
let arr =new( 'yellow', 'red' , 'blue' )
第二种方法:数组字面量表示法
let colors = ["red", "blue", "green"]
数组的方法
一、检测是否为数组
Array.isArray()
二、转换方法
toString() :创建一个数组值的以逗号分隔的字符串
toLocaleString() :由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串 ,调用的是每一项的 toLocaleString()方法
valueOf()
数组继承的 toLocaleString()、 toString()和 valueOf()方法,在默认情况下都会以逗号分隔的字
符串的形式返回数组项。而如果使用 join()方法,则可以使用不同的分隔符来构建这个字符串。
三、栈方法
push() :可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
pop() :从数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项
四、队列方法
unshift() :数组前端添加任意个项并返回新数组的长度
shift() :数组前端移除任意个项并返回新数组的长度
五、重排序方法
reverse():反转数组项的顺序
sort() :按升序排列数组项 ,调用每个数组项的 toString()转型方法,然后比较得到的字符串,以确定如何排序
六、操作方法
concat()
splice() : 删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。例如, splice(0,2)会删除数组中的前两项。
插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、 0(要删除的项数)和要插入的项。如果要插入多个项,可以再
传入第四、第五,以至任意多个项。例如,splice(2,0,"red","green")会从当前数组的位置 2 开始插入字符串"red"和"green"。
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例如,
splice (2,1,"red","green")会删除当前数组位置 2 的项,然后再从位置 2 开始插入字符串"red"和"green"。
七、位置方法
indexOf() :从数组的开头(位置 0)开始向后查找 ,没找到的情况下返回-1
lastIndexOf() :从数组的末尾开始向前查找 ,没找到的情况下返回-1
八、迭代方法
every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。
filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。
九、归并方法
reduce() :迭代数组的所有项,然后构建一个最终返回的值 ,从数组的第一项开始,逐个遍历到最后
reduceRight() :迭代数组的所有项,然后构建一个最终返回的值 ,从数组的最后一项开始,向前遍历到第一项
reduce()和 reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象
eg1:
var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
});
eg2:
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});