佳宸学习和分享笔记的地方

0%

数组方法整理

数组方法整理

要操作数据的时候,数组一堆方法把我搞混沌了,每次都要查一下资料,干脆整理一下

forEach()

forEach() 方法对数组的每个元素执行一次提供的函数。mdn

不会返回执行结果,返回的是undefined,也就是说,forEach()会修改原来的数组,中途不能用常规操作跳出循环,不支持链式操作,forEach之前可以链式

当数组中元素是类型,forEach不会改变数组;当是引用类型,则可以改变数组

map()

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果mdn

map()方法会得到一个新的数组并返回。速度更快,必须要有return。


filter()

filter() 方法创建一个新数组,其包含通过所提供函数实现的测试的所有元素。


sort()

sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认按Unicode升序

它直接改变原始数组

要比较数字而非字符串,比较函数可以简单的以 a 减 b,如下的函数将会将数组升序排列

1
2
3
var numbers = [4, 2, 5, 1, 3]; 
numbers.sort((a, b) => a - b);
// [1, 2, 3, 4, 5]

some()

some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。

只要有一个满足即返回true,之后的不再执行

every()

every() 方法测试一个数组内的所有元素是否能通过某个指定函数的测试。它返回一个布尔值。

1
2
3
4
5
6
let obj = [
{name: 'Jason', age: 20},
{name: 'cecilia', age: 19}
].every(item => item.age > 19)
console.log(obj)
// => false

find()

find() 方法返回数组中满足提供的测试函数第一个元素的值。否则返回 undefined

findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。


reduce()

对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。

  • accumulator 累计器
  • currentValue 当前值
  • currentIndex 当前索引(可选)
  • array 数组(可选)
1
[0, 1, 2, 3, 4].reduce((prev, curr) => prev + curr );

如果你打算提供一个初始值作为reduce()方法的第二个参数,以下是运行过程及结果:

1
[0, 1, 2, 3, 4].reduce((accumulator, currentValue, currentIndex, array) => { return accumulator + currentValue; }, 10 );
callbackaccumulatorcurrentValuecurrentIndexarrayreturn value
first call1000[0, 1, 2, 3, 4]10
second call1011[0, 1, 2, 3, 4]11
third call1122[0, 1, 2, 3, 4]13
fourth call1333[0, 1, 2, 3, 4]16
fifth call1644[0, 1, 2, 3, 4]20

这种情况下reduce()返回的值是20