# 数组常用方法

# find

返回通过callback函数测试的第一个元素,否则返回undefined

  const finded = [1, 2, 3].find(element => element > 1);
  // finded: 2
1
2

注意: 返回的是元素

# filter

返回一个新数组,包含通过callback函数测试的所有元素

  const filtered = [1, 2, 3].filter(element => element > 1);
  // filtered: [2, 3];
1
2

注意: 返回的是数组

# map

返回一个新数组,新数组中的每个元素都是调用callback函数后返回的结果。注意:如果没有return值,则新数组会插入一个undefined值

参数: value数组中的当前项,index当前项的索引,array原始数组;

  const maped = [{name: 'aa', age: 18}, {name: 'bb', age: 20}].map(item => item.name + 'c');
  // maped: ['aac', 'bbc'];
1
2

# 上面三个方法的对象数组应用

  let arrList = [
    {id: 1, name: 'a'},
    {id: 2, name: 'b'},
    {id: 3, name: 'c'},
    {id: 4, name: 'd'},
    {id: 5, name: 'e'},
    {id: 6, name: 'f'}
  ]
  let findWay = arrList.find((item) => item.id === 2)
  let findWay1 = arrList.find((item) => {
    if (item.id === 2) {
      item.status = 'fmy'
    }
  })
  let filterWay = arrList.filter((item) => item.id === 2)
  let filterWay1 = arrList.filter((item) => {
    if (item.id === 2) {
      item.status = 'fmy'
    }
  })
  let mapWay = arrList.map((item) => {
    if (item.id === 2) {
      item.status = 'fmy'
    }
  })
  console.log('arrList', arrList)
  console.log('findWay', findWay)
  console.log('findWay1', findWay1)
  console.log('filterWay', filterWay)
  console.log('filterWay1', filterWay1)
  console.log('mapWay', mapWay)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# array.slice(begin, end)

返回一个新数组,包含原数组从begin 到 end(不包含end)索引位置的所有元素。

  const newArray = ['zero', 'one', 'two', 'three'].slice(1, 3);
  // newArray: ['one', 'two'];
1
2

# forEach

  • 参数:value数组中的当前项, index当前项的索引, array原始数组;
  • 数组中有几项,那么传递进去的匿名回调函数就需要执行几次;
  • 理论上这个方法是没有返回值的,仅仅是遍历数组中的每一项,不对原来数组进行修改;但是可以自己通过数组的索引来修改原来的数组;
  var ary = [12,23,24,42,1];  
  var res = ary.forEach(function (item,index,input) {  
        input[index] = item*10;  
  })  
  console.log(res);//--> undefined;  所以通常使用时直接arr.forEach  不给它赋值变量
  console.log(ary);//--> 通过数组索引改变了原数组; 
1
2
3
4
5
6