数组方法总结

创建数组的方法

  • Array.of(): 创建包含所有传入参数的数组。
  • Array.from(): 从类数组或可迭代对象创建数组。
let arr1 = Array.of(1, 2, 3); // [1, 2, 3]
let arr2 = Array.from('hello'); // ['h', 'e', 'l', 'l', 'o']

添加/删除元素

  • push(): 在数组末尾添加一个或多个元素,返回新数组的长度。
  • pop(): 删除数组末尾的一个元素,返回该元素。
  • unshift(): 在数组开头添加一个或多个元素,返回新数组的长度。
  • shift(): 删除数组开头的一个元素,返回该元素。
  • splice(): 从数组中添加/删除元素,返回被删除的元素。如果未规定第二个参数,则删除从 index 开始到原数组结尾的所有元素。改变原数组
let arr = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4]
arr.pop(); // [1, 2, 3]
arr.unshift(0); // [0, 1, 2, 3]
arr.shift(); // [1, 2, 3]
arr.splice(1, 1, 'a'); // [1, 'a', 3]
arr.splice(1, 0, 'a'); //[1, 'a', 2, 3]

查找元素

  • indexOf(): 返回元素在数组中的第一个索引,没有则返回 -1。(完全匹配)
  • lastIndexOf(): 返回元素在数组中的最后一个索引,没有则返回 -1。
  • includes(): 检查数组是否包含某个元素,返回布尔值。(可以部分匹配)
  • find(): 返回满足提供的测试函数的第一个元素的值。
  • findIndex(): 返回满足提供的测试函数的第一个元素的索引。
let arr = [1, 2, 3, 2];
arr.indexOf(2); // 1
arr.lastIndexOf(2); // 3
arr.includes(3); // true
arr.find(x => x > 1); // 2
arr.findIndex(x => x > 1); // 1

迭代方法

  • for 循环或 for…of 循环
  • forEach(): 对数组的每个元素执行一次提供的函数。return 语句会退出当前的回调函数,但 forEach 循环会继续处理数组中的下一个元素,forEach函数没有返回值,和上面两个循环一样
  • map(): 创建一个新数组,其结果是该数组中的每个元素调用一次提供的函数后的返回值。新数组的长度与原数组的长度一致
  • filter(): 创建一个新数组,其中包含所有通过提供的函数实现的测试的元素。
  • reduce(): 对数组中的每个元素执行一个 reducer 函数,最终得到一个值。
  • reduceRight(): 从右到左对数组中的每个元素执行一个 reducer 函数,最终得到一个值。
  • every(): 测试数组的所有元素是否都通过了指定函数的测试,返回布尔值。return停止循环
  • some(): 测试数组中的某些元素是否至少有一个通过了指定函数的测试,返回布尔值。return停止循环
let arr = [1, 2, 3, 4];
arr.forEach(x => console.log(x)); // 1 2 3 4
let doubled = arr.map(x => x * 2); // [2, 4, 6, 8]
let evens = arr.filter(x => x % 2 === 0); // [2, 4]
let sum = arr.reduce((acc, x) => acc + x, 0); // 10
let sumRight = arr.reduceRight((acc, x) => acc + x, 0); // 10
arr.every(x => x > 0); // true
arr.some(x => x > 3); // true

排序和翻转

  • sort(): 对数组的元素进行排序并返回该数组。
  • reverse(): 颠倒数组中元素的顺序并返回该数组。
let arr = [3, 1, 4, 2];
arr.sort(); // [1, 2, 3, 4]
arr.reverse(); // [4, 3, 2, 1]

连接、切割、复制

  • concat(): 合并两个或多个数组,不改变现有数组,返回一个新数组。
  • slice(): 返回一个从开始到结束(不包括结束)选择的数组的一部分。
  • join(): 将数组的所有元素连接成一个字符串。
let arr1 = [1, 2];
let arr2 = [3, 4];
let arr3 = arr1.concat(arr2); // [1, 2, 3, 4]
let arr4 = arr3.slice(1, 3); // [2, 3]
let str = arr4.join('-'); // "2-3"

其他方法

  • fill(): 用一个固定值填充数组中的从起始索引到终止索引(不包括终止索引)的全部元素。可以使用负数索引来表示从数组末尾开始的相对位置。改变原数组,并返回修改后的原数组
  • copyWithin(): 从数组的指定位置拷贝元素到数组的另一个指定位置中。它会改变原数组,并返回修改后的数组
    target:复制开始的位置的索引。start(可选):复制元素的起始位置的索引(包含该位置)。默认是 0。end(可选):复制元素的结束位置的索引(不包含该位置)。默认是数组的长度。
let arr = [1, 2, 3, 4];
arr.fill(0, 2, 4); // [1, 2, 0, 0]
arr.fill(0, -3, -1); // [1, 0, 0, 4]
arr.copyWithin(2, 0, 2); // [1, 2, 1, 2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值