1.map
1.map返回新数组,不改变原数组
2.原始数组的每一项都会调用提供的函数并返回新的数组
[●,●,■,●].map(● => ■) //[■,■,■,■]
let arr = ['张三','李四','王五','赵六'];
let mapArr = arr.map(e => '孙七');
//console.log(mapArr);['孙七','孙七','孙七','孙七']
2.filter
1.filter返回新数组,不改变原数组
2.数组内的每一项通过函数处理后,返回一个各项都符合条件的数组,在下面这个数组中,如果想把宋朝的人过滤出来,就可以使用filter方法
[●,■,●,■].filter(■ => true) //[■,■]
let arr = [
{id:0,name:'杜甫',age:'唐'},
{id:1,name:'李白',age:'唐'},
{id:2,name:'李商隐',age:'唐'},
{id:3,name:'苏轼',age:'宋'},
{id:4,name:'辛弃疾',age:'宋'}
];
let filterArr = arr.filter(e=>e.age === '宋');
console.log(filterArr);
//{id:3,name:'苏轼',age:'宋'},
//{id:4,name:'辛弃疾',age:'宋'}
3.find
1.find返回的是数组中的一项,不改变原数组
2.通过函数处理后返回符合元素的第一项,只要找到符合的就把这一项返回出去
[■,●,■,●].find(● => true) //●
let arr = [
{id:0,name:'杜甫',age:'唐'},
{id:1,name:'李白',age:'唐'},
{id:2,name:'李商隐',age:'唐'},
{id:3,name:'苏轼',age:'宋'},
{id:4,name:'辛弃疾',age:'宋'}
];
let findItem = arr.find(e=>e.age === '宋');
console.log(findItem);
//{id:3,name:'苏轼',age:'宋'}
4.findIndex
1.返回的是索引值,不改变原数组
2.通过函数处理后返回复符合元素中的第一项索引值,和find方法一样,都是找到第一个符合的就返回
[■,●,■,●].findIndex(● => true) //●
let arr = [
{id:0,name:'杜甫',age:'唐'},
{id:1,name:'李白',age:'唐'},
{id:2,name:'李商隐',age:'唐'},
{id:3,name:'苏轼',age:'宋'},
{id:4,name:'辛弃疾',age:'宋'}
];
let findIndexItem = arr.findIndex(e=>e.age === '宋')
console.log(findIndexItem);//3
5.every
1.every返回布尔值,不改变原数组
2.every是检查数组中的所有元素是否都符合条件,如果都符合返回true,有一项不符合就返回false
[■,●,■,●].every(● => true) //false
let arr = [
{id:0,name:'杜甫',age:'唐'},
{id:1,name:'李白',age:'唐'},
{id:2,name:'李商隐',age:'唐'},
{id:3,name:'苏轼',age:'宋'},
{id:4,name:'辛弃疾',age:'宋'}
];
let everyFlag = arr.every(e=>e.age==='宋');
console.log(everyFlag);//false
6.some
1.some返回的是布尔值
2.检查数组中是否有任意一个元素符合条件,只要有一个符合就返回true
[■,■,■,●].some(● => true) //true
let arr = [
{id:0,name:'杜甫',age:'唐'},
{id:1,name:'李白',age:'唐'},
{id:2,name:'李商隐',age:'唐'},
{id:3,name:'苏轼',age:'宋'},
{id:4,name:'辛弃疾',age:'宋'}
];
let someFlag = arr.some(e=>e.age==='宋');
console.log(someFlag);//true
7.concat
1.concat返回新数组
2.cocat是合并两个数组,将两个数组合并成一个新的数组并返回
[■,■,●].concat([●,●]) //[■,■,●,●,●]
let arr = [
{id:0,name:'杜甫',age:'唐'},
{id:1,name:'李白',age:'唐'},
{id:2,name:'李商隐',age:'唐'},
{id:3,name:'苏轼',age:'宋'},
{id:4,name:'辛弃疾',age:'宋'}
];
let newArr = [
{id:5,name:'李清照',age:'宋'}
];
let concatArr = arr.concat(newArr);
console.log(concatArr);
/*
[
{ id: 0, name: '杜甫', age: '唐' },
{ id: 1, name: '李白', age: '唐' },
{ id: 2, name: '李商隐', age: '唐' },
{ id: 3, name: '苏轼', age: '宋' },
{ id: 4, name: '辛弃疾', age: '宋' },
{ id: 5, name: '李清照', age: '宋' }
]
*/
8.join
1.返回字符串
2.将数组的每个元素拼接成字符串,没有传参就直接拼接,如果有参数九江参数当做拼接符链接
[■,●,■,●].join('-') //■-●-■-●
let arr = ['贝','加','尔','湖','畔'];
let joinStr = arr.join('-');
console.log(joinStr);//贝-加-尔-湖-畔
9.reduce
1.累加结果
2.可以做一个累加器
[1,2,3,4].reduce((total,current) => total+current,10)//20
let arr = [1,2,3,4];
let reduceRes = arr.reduce((total,current) => total+current,10);
console.log(reduceRes)//20
10.forEach
1.forEach改变了原数组
2.对数组中每一项都执行一次函数
[●, ●, ■, ●].forEach(● => ■) //[■, ■, ■, ■]
let arr = [
{id:0,name:'杜甫'},
{id:1,name:'李白'},
{id:2,name:'李商隐'}
];
let forEachArr = arr.forEach(e=>e.age='唐')
console.log(forEachArr);//undefined
console.log(arr);
/*
arr: [
{ id: 0, name: '杜甫', age: '唐' },
{ id: 1, name: '李白', age: '唐' },
{ id: 2, name: '李商隐', age: '唐' }
]
*/
11.flat
1.flat改变原数组
2.flat用于数组扁平化,参数为要扁平化的底层,可以直接传入Infinity,表示全部扁平化
[○, □, [△, [△, ○]]].fill(Infinity) // [○, □, △, △, ○]
let arr =[1,2,[[3],4]];
arr.flat(Infinity);
console.log(arr);//[1,2,3,4]
12.fill
1,fill改变原数组
2.fill作用为填充数组,第一个参数为要填充的内容,后面的两个参数分别为开始到结束的位置
[○, □, △, ○].fill(☆, 2, 3) // [○, □, ☆, ○]
let arr = [1,2,3,4];
arr.fill('Hello',2,3);
console.log(arr);//[1,2,'Hello',4]