常用数组方法

常用数组方法

1.map(callbackFn, thisArg)

返回:新数组,每个元素都是回调函数的返回值。
应用:
–格式化数组中的对象
–元素遍历计算

2.flat(depth)

返回:新数组(浅拷贝),根据指定深度递归地将所有子数组元素拼接到新的数组中。
应用:
–默认深度为 1。参数为 Infinity 时,可展开任意深度的嵌套数组。
–在稀疏数组上使用 flat(),删除数组中的空槽。稀疏数组[1, 2, , 4, 5]。

3.flatMap(callbackFn, thisArg)

返回:新数组,数组中每个元素应用给定的回调函数,最后将结果展开一级。
应用
–改变数组的值、添加或删除数组元素。如果要保留该项,则返回一个包含该项的单元素数组,如果要添加元素,则返回一个包含多个元素的数组,如果要删除该项,则返回一个空数组

// 假设我们想要删除所有负数,并将奇数拆分成偶数和 1
const a = [5, 4, -3, 20, 17, -33, -4, 18]
//         |\  \  x   |  | \   x   x   |
//        [4,1, 4,   20, 16, 1,       18]

const result = a.flatMap(n => {
  if (n < 0) {
    return []
  }
  return n % 2 === 0 ? [n] : [n - 1, 1]
})
console.log(result) // [4, 1, 4, 20, 16, 1, 18]
4.find(callbackFn, thisArg)

返回:第一个满足回调函数条件的元素,如果没有则返回 undefined。
应用:
–查找数组中符合条件的第一个元素

5.findIndex(callbackFn, thisArg)

返回:第一个满足回调函数条件的元素的索引,如果没有则返回-1。
应用:
–查找数组中符合条件的第一个元素的索引

6.forEach(callbackFn, thisArg)

返回: undefined,因此无法链式调用。
应用: 为数组中每个元素执行函数
注意:
–除非抛出异常,否则没有办法停止或中断 forEach()循环,使用 for、for…of 和 for…in 这样的循环语句来实现提前终止。
–forEach() 内部使用同步函数,不会等待 Promise 兑现

7.filter(callbackFn, thisArg)

返回:新数组(浅拷贝),包含所有通过回调函数测试的元素;没有元素通过测试,则返回空数组。
应用: 过滤掉不需要的值

8.some(callbackFn, thisArg)

返回:布尔值,只要有一个元素通过回调函数的测试,就返回 true,否则返回 false。
应用:判断数组中是否存在满足条件的元素。

9.every(callbackFn, thisArg)

返回:布尔值,如果数组中的所有元素都通过回调函数的测试,就返回 true;否则返回 false。
应用: 判断数组中是否所有的元素都满足条件
注意: every 和数学中的全称量词"任意(∀)"类似。对于空数组,它只返回 true

10.includes(searchElement, fromIndex)

返回: 布尔值,判断数组中是否包含指定元素。
应用: 用于判断一个数组是否包含一个指定的值

11.reduce(callbackFn, initialValue)

返回: 累计值
应用:
–reduce() 方法对数组中的每个元素按序执行一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
–求对象数组中值的总和,必须提供一个 initialValue,以便每个项都通过回调函数处理。

const objects = [{ x: 1 }, { x: 2 }, { x: 3 }]
const sum = objects.reduce((accumulator, currentValue) => accumulator + currentValue.x, 0)

console.log(sum) // 6

注意:第一次调用回调时初始化 accumulator 的值。如果指定了 initialValue,则 callbackFn 从数组中的第一个值作为 currentValue 开始执行。如果没有指定 initialValue,则 accumulator 初始化为数组中的第一个值,并且 callbackFn 从数组中的第二个值作为 currentValue 开始执行。

const names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']

const countedNames = names.reduce((allNames, name) => {
  const currCount = allNames[name] ?? 0
  return {
    ...allNames,
    [name]: currCount + 1
  }
}, {})
// countedNames 的值是:
// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }

数组方法中改变原数组的方法有:pop()、push()、reverse()、shift()、sort()、splice()、unshift()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值