# 数组常用方法
# find
返回通过callback函数测试的第一个元素,否则返回undefined
const finded = [1, 2, 3].find(element => element > 1);
// finded: 2
1
2
2
注意: 返回的是元素
# filter
返回一个新数组,包含通过callback函数测试的所有元素
const filtered = [1, 2, 3].filter(element => element > 1);
// filtered: [2, 3];
1
2
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
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
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
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
2
3
4
5
6