数组从初始化后就不能被改变,对数组的几乎所有修改都是将修改后的原数组放入一个新数组中,原数组销毁;
1、Array.isArray()//确定括号内的值是不是数组
2、includes()// includes() 方法用于判断字符串或者数组是否包含指定的子字符串或数组项,或者判断数组中是否有指定的元素。例如:[‘hellow’,‘world’].includes(‘hellow’) ,如果数组存在指定元素就会返回true,没有就返回false。
3、push()//可以接收任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后的数组长度,改变原数组
语法:arr.push(project1, project2,…) project 为待添加的项,按顺序添加到数组末尾4、pop()//从数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项,改变原数组
语法:arr.pop() 移除 arr 数组末尾的一项,括号内的参数对结果没影响5、unshift()//可以接收任意数量的参数,把他们添加到数组前面,并返回修改后的数组长度,改变原数组
语法:arr.unshift(project1, project2,…) project 为待添加的项,按顺序添加到数组开头6、shift()//从数组前面移除一项,减少数组的 length 值,然后返回移除的项,改变原数组
语法:arr.shift() 移除 arr 数组开头的一项,括号内的参数对结果没影响7、reverse()//反转数组项的顺序,返回反转后的数组,改变原数组
语法:arr.reverse() 将数组整体前后对换,括号内的参数对结果没影响8、sort()//将每一项按照字母升序排列,如果像按照其他方式给数组进行排列,必须给 sort 方法传递一个比较函数作为参数,返回排序后的数组,改变原数组
比较函数的创建:function up(value1, value2) {
//value1和value2就是数组项
return value1 - value2;
}
value1 - value2 表示按照升序排列,value2 - value1 表示按照降序排列
语法:arr.sort(up) 将数组整体进行升序排列,括号内的参数为我们设好的函数的函数名9、concat()//可以基于当前数组中所有项创建一个新数组,参数可以是数组项或者数组,创建一个原数组的副本,返回值是数组副本与其他参数合并后的新数组,原数组没有改变
语法:arr = arr.concat(arr1, arr2,…) 创建一个数组 arr 的副本,并将括号内的数组 arr1, arr2, … 等数组添加到副本数组后面10、slice()//基于当前数组的一个或是多个项创建一个新数组,可以接收一个或两个参数,即返回项的起始和结束位置,截取的数组不包括结束位置的项。返回值为切割后的新数组,原数组没有改变
语法:arr = arr.slice(start, end) 参数表示切割数组的第几项(不是索引),参数为正表示从开头开始遍历,并从遍历到的项右边开始切割,负数表示从数组末尾开始遍历,并从遍历到的项左边开始切割。保留两个参数中的数组项,如果只有一个参数,表示第一个参数,第二个参数默认为数组末尾11、splice()//对数组进行删除、插入、替换,是最强大的数组方法。返回的值是被切割的值,改变原数组
语法:arr.splice(start, number, replacement) 第一个参数表示从第几项开始切割(与slice的第一个参数含义相同),第二个参数表示要切割多少项,第三个参数表示在被切割后的位置用什么项目来替代12、join()**//将数组转换成对应的字符串,参数是连接符,可以和字符串方法 split() 一起完成字符串与数组之间的相互转换;返回值为数组改变成的字符串,原数组没有被改变。**
语法:let str = arr.join(connect) 参数表示原数组项转换成字符串后每项中间的连接符为什么13、flat()方法:将多维数组展开降维,flat中的参数为展开的维度,如果写Infinity,则会将多维数组都展开为1维数组,返回值为展开后的数组,不改变原数组
ES5新增数组方法:
位置方法:
14、indexOf(project,start)//方法从数组开头开始找,第二个参数是负数,就从反方向开始找
15、lastIndexOf(project,start)//方法从数组末尾开始找,第二个参数是负数,就从反方向开始找
返回要查找的项目在数组中的索引位置,没找到的情况下返回 -1 ;
两个参数:要查找的项和表示查找起点的索引(可选)
迭代方法:
有两个参数, 第一个:要在每一项运行的函数(函数当参数,回调函数),此函数会接收三个参数:数组项的值、该项在数组中的位置、返回的数组对象本身。 第二个:运行该函数的作用域对象,即 this 的值(可选);
16、every()//对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true,不改变原数组
17、some()//对数组中的每一项运行给定函数,如果该函数对任意一项返回 true,则返回 true
18、filter()(重要)//对数组中的每一项运行给定函数,返回该函数结果为 true 的项目组成的数组
arr.filter(function(v, i, a){
// v:数组项的值 i:数组项对应的索引 a:返回的数组本身
})
19、map()(重要)//对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组(函数中return的结果),返回就是数组,不考虑 true 或者 false
20、forEach()(重要)//对数组中的每一项运行给定函数,这个方法没有返回值
归并方法:
每一次迭代得到的结果会作为下一次迭代的初始值,这两个方法都会迭代数组的所有项,然后构建一个最终返回的值,有两个参数, 第一个:每一项调用的函数;(可选,调用的函数接收四个参数:前一个值、当前值、项的索引和数组对象) 第二个:作为归并的初始值;
21、reduce()//从数组的一项开始,逐个遍历到最后,将每一次return的值作为前一项传递给下一项迭代
22、reduceRight()//从数组的最后一项开始,向前开始遍历
23、Array.of():填充单个值
24、Array.from():将类数组转换为真正的数组
25、toString():将数组转换为字符串形式的数组
26、toLocaleString():将数组转换为本地数组
27、findIndex():查找这一组数字,返回符合条件的第一个数的下标,不存在返回-1