JavaScript数组方法
push、pop、shift、unshift(改变原数组)
push() 添加元素到数组末端并返回数组的新长度
pop() 删除数组的最后一项并返回被删除的元素
unshift() 添加元素到数组的首端并返回数组的新长度
shift() 删除数组的第一项并返回被删除的元素
注: 给数组添加元素时可以传递多个元素
var arr = [1, 2, 3, 4, 5];
arr.push("测试元素"); // => [1, 2, 3, 4, 5, "测试元素"],返回数组长度为 6
arr.pop(); // => [1, 2, 3, 4, 5],返回被删除的元素 "测试元素"
arr.unshift("测试元素"); // => ["测试元素", 1, 2, 3, 4, 5],返回数组长度为 6
arr.shift(); // => [1, 2, 3, 4, 5],返回被删除的元素 "测试元素"
arr.push("测试元素", "测试元素", "测试元素");
// => [1, 2, 3, 4, 5, "测试元素", "测试元素", "测试元素"]
reverse、sort(改变原数组)
reverse() 颠倒数组内元素,返回新数组,改变原数组
sort() 对数组进行排序。默认排序顺序是将元素转换为字符串,然后比较它们的UTF-16码。
将函数作为参数时,该函数需要两个参数A,B,当函数的返回值为 -1 时;排序为A,B,当函数的返回值为 0 时,排序为A,B;当函数的返回值为 1 时,排序为B,A
var arr = [5, 8, 23, 57, 32, 5, 6, 7];
arr.reverse(); // => [7, 6, 5, 32, 57, 23, 8, 5]
arr.sort(); // => [23, 32, 5, 5, 57, 6, 7, 8]
arr.sort((a, b) => a - b); // => [5, 5, 6, 7, 8, 23, 32, 57]
splice(改变原数组)、slice(不改变原数组)
splice() 通过索引添加或删除任意个元素,返回新数组,改变原数组
slice() 截取当前数组中的一部分,返回新数组,不改变原数组
var arr = [1, 2, 3, 4, 5];
// splice(数组的索引值,删除*个元素, 在该索引位添加的元素)
// 返回值为被删除的元素组成的新数组
// 当删除的元素为0时,则为添加元素
arr.splice(2, 1, "测试元素"); // => [1, 2, "测试元素", 4, 5] 返回值为 [3]
// slice(开始的索引位,结束的索引位)
arr.slice(1, 4); // => [1, 2, "测试元素", 4, 5] 返回值为[2, "测试元素", 4]
join、toString、concat(不改变原数组)
join() 将数组拼接成字符串,按所传参数(字符串)拼接
toString() 将数组转化为字符串
concat() 将两个数组拼接成一个数组,并返回新数组
var arr = [1, 2, 3, 4, 5];
arr.join(); // => "1,2,3,4,5"
arr.join(""); //=> "12345"
arr.join("-"); // => "1-2-3-4-5"
arr.toString(); // => "1,2,3,4,5"
arr.concat("测试元素", "测试元素"); // => [5, 4, 3, 2, 1, "测试元素", "测试元素"]
var arr1 = [3, 3, 3];
arr.concat(arr1); // => [5, 4, 3, 2, 1, 3, 3, 3]
indexOf、lastIndexOf、find、findIndex、includes(不改变原数组)
indexOf() 返回数组中第一个与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1
lastIndexOf() 返回数组中最后一个(从右边数第一个)与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1
find() 找到第一个满足测试函数的元素并返回那个元素的值,如果找不到,则返回 undefined
findIndex() 找到第一个满足测试函数的元素并返回那个元素的索引,如果找不到,则返回 -1
includes() 判断当前数组是否包含指定值,返回true、false
var arr = [1, 2, 4, 3, 2, 3];
arr.indexOf(3); // => 3
arr.lastIndexOf(2); // => 4
arr.find(num => num > 3); // => 4
arr.findIndex(num => num > 3); // => 2
arr.includes(3); // => true
filter、map(不改变原数组)
filter() 过滤数组,将过滤函数中返回 true 的数组元素放入新数组,并返回
map() 将原数组中每个元素都调用一次回调函数,回调函数的返回值组成一个新数组,并返回
var arr = [1, 2, 3, 4, 5];
arr.filter(num => num > 3); // => [4, 5]
arr.map(num => num * 2); // => [2, 4, 6, 8, 10]
from、isArray(实例方法)
from() 将一个类数组或可迭代对象转换为数组
isArray() 判断传递的参数是否为一个数组
Array.from("foo"); // => ["f", "o", "o"]
Array.isArray([1, 2, 3]); // => true
Array.isArray("dsfzgadhdf"); // => false
reduce
为数组中每一个元素依次调用回调函数
基本使用:arr.reduce(function(prev, cur, index, arr) {}, init)
reduce 方法需要两个参数,第一个参数为一个回调函数,该函数有四个参数,第二个参数为初始值
prev 上一次调用回调的返回值
cur 当前正在处理的元素
index 当前元素在数组中的索引
arr 调用 reduce 方法的数组
注意:如果没有提供 init 参数,reduce 会从索引值为 1 的地方开始执行回调 方法,跳过第一个索引。如果提供 init 参数,从索引 0 开始。
例:对数组进行求和
const arr = [1, 2, 3, 4];
arr.reduce(function(prev, cur, index, arr) {
return prev + cur;
}, 0)