数组arr常用的方法
1. arr.push() 添加 后面
2. arr.pop() 删除 后面
3. arr.unshif() 添加 前面
4. arr.shift() 删除 前面
5. arr.reverse()
6. arr.concat() 拼接两个数组
7. arr.splice()
8. arr.slice()
9. arr.sort() 排序
10. arr.join()
11. arr.toString()
序号 | 方法 | 释义 | 返回值 | 是否改变原数组 |
---|---|---|---|---|
1 | arr.push() | 数组的末尾添加一个或多个元素 | 把指定的值添加到数组后的新长度 | yes |
2 | arr.pop() | 删除并返回数组的最后一个元素 | 数组的最后一个元素 | yes(如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。) |
1/2 | push() 方法和 pop() 方法 | 使用数组提供的先进后出栈的功能。 | ||
3 | arr.unshif() | 向数组的开头添加一个或多个元素 | 返回新数组的长度 | yes |
4 | arr.shift() | 把数组的第一个元素删除 | 返回删除元素的值 | yes |
5 | arr.reverse() | 颠倒数组中元素的顺序 | 该方法会改变原来的数组,而不会创建新的数组 | yes |
6 | arr.concat() | 方法用于连接两个或多个数组 | 被连接数组的一个副本 | No |
7 | arr.splice() | 向/从数组中添加/删除项目,然后返回被删除的项目(该方法会改变原数组)!!! | 删除项目的新数组 | yes |
8 | arr.slice() | 从已有的数组中返回选定的元素 | 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。 | No |
9 | arr.sort() | 对数组的元素进行排序。 arrayObject.sort(sortby)。sortby:可选。规定排序顺序。必须是函数。 | 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。 | yes |
10 | arr.join() | 把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。如果省略分隔符,则使用逗号作为分隔符。 | 一个字符串 | yes |
11 | arr.toString() | arrayObject 的字符串表示 | 没有参数的 join() 方法返回的字符串相同 | yes |
8.arr.splice()的扩展
arrayObject.splice(index,howmany,item1,…,itemX)
参数 | 描述 |
---|---|
index | 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 |
howmany | 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 |
item1, …, itemX | 可选。向数组添加的新项目。 |
10.arr.slice()的扩展
arrayObject.slice(start,end)
请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
提示和注释
注释:您可使用负值从数组的尾部选取元素。
注释:如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
注释:splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
参数 | 释义 |
---|---|
start | 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。 |
end | 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 |
【es5新增数组操作方法】
indexOf、forEach、map、every、some、filter、reduce
1,Array.indexOf()
查找数组内指定元素的位置,查到第一个值时返回其索引,没查到返回-1
let arr = [1,2,3,4];
console.log(arr.indexOf(3)); // 2
//.lastIndexOf(element)为倒序查找
//跟indexOf()一样,只是查找起始点不同,indexOf是从第一个开始查找,
//lastIndexOf()是从最后一个查找,如果存在,返回下标,如果不存在返回-1
2,Array.foreEach()
跟之前的for()循环一样,只是forEach更灵活
arr.forEach(function(e,index,arr){
//e 当前元素
//index 可选 当前元素的索引。
//arr 可选 整个数组。
});
3,Array.map()
map()方法返回一个被操作后的新数组,不会改变原数组
map()一般配合return使用,如果没有return那跟forEach一样
arr.map(function(e,index,arr){
//e 当前元素
//index 可选 当前元素的索引。
//arr 可选 整个数组。
});
三、区别
1、map速度比foreach快
2、map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组,foreach返回undefined
3、map因为返回数组所以可以链式操作,foreach不能
4, map里可以用return ,而foreach里用return不起作用,foreach不能用break,会直接报错
4,Array.some()
判断数组内是否有指定元素,如果只要有一个则返回true,如果一个都没有则返回false
arr.some(function(element,index,array){
//element 当前元素
//index 可选 当前元素的索引。
//array 可选 整个数组。
});
5,Array.filter(callback)
let b = a.filter(item => item.name === 'kele');
console.log(b) //[{name: 'kele', title: '可口可乐'},{name: 'kele', title: '芬达'}]
//Array.filter()让我们摆脱了for循环,代码看起来更加的清爽!
6,Array.reduce()
遍历数组,调用回调函数,将数组元素合成一个值返回结果,其中value为设定的初始值(可选)
arr.reduce(function(v1, v2), value)
【es6新增数组操作方法】
1,Array.find(callback)
这个方法是返回数组中符合条件的第一个元素,否则就返回undefined
let a = [1,2,3,4,5];
let b = a.find(item => item > 2);
console.log(b) // 3
传入一个回调函数,找到数组中符合搜索规则的第一个元素,返回它并终止搜索
const arr = [1, "2", 3, 3, "2"]
console.log(arr.find(item => typeof item === "number")) // 1
2,Array.findIndex(callback)
这个方法是返回数组中符合条件的第一个元素的索引值,否则就返回-1
let a = [1,2,3,4,5];
let b = a.findIndex(item => item > 2);
console.log(b) // 2 符合条件的为元素3 它的索引为2
找到数组中符合规则的第一个元素,返回它的下标
const arr = [1, "2", 3, 3, "2"]
console.log(arr.findIndex(item => typeof item === "number")) // 0
3,Array.includes(item, finIndex)
includes(),判断数组是否存在有指定元素,参数:查找的值(必填)、起始位置,
可以替换 ES5 时代的 indexOf 判断方式。indexOf 判断元素是否为 NaN,会判断错误。
var a = [1, 2, 3];
let bv = a.includes(2); // true
let cv = a.includes(4); // false
4,...扩展运算符
可以很方便的帮我们实现合并两个数组
let a = [1,2,3];
let b = [4,5,6];
let c = [...a,...b];
console.log(c) // [1,2,3,4,5,6];