1、map: 一定遍历全部数据,不能通过return结束,消耗性能,不要常用。
常用于转换数据结构,比forEach快。
使用方法如下:
let aa = [1,2,3];let bb = [];let cc = [];let dd = [];bb = aa.map((x)=>({key: x, value: x}));console.log('bb',bb);bb.map((x)=>x.name='name');cc = bb;console.log('cc',cc);dd = bb.map((x)=>{return x.key});console.log('dd',dd);
结果如下
2、forEach: 遍历全部数据,不能通过return结束循环,消耗性能
用于不转换数据的全部遍历。
3、filter:遍历全部,返回数组,过滤成新的数组。
常用于:过滤不符合项,数组去重,过滤空字符串、undefined、null等。
var arr = [{ num: 1, val: 'ceshi', flag: 'aa' },{ num: 2, val: 'ceshi2', flag: 'aa2' }]console.log(arr.filter((item) => item.num===2 ))
4、for循环:通过累加数组索引,来输出数组中的值,一般只用于循环数组。
有下标,通过下标取值,可通过return退出循环。
5、for of :遍历时获得其中的每一项(属性值),可以通过return结束循环,但是循环的时候没有下标。
let arr=[{name:'aa',age:12},{name:'bb',age:13},{name:'cc',age:14}];for(let item of arr){console.log(item);}
6、for in: 不但可以遍历数组,还可以遍历对象,数组遍历下标,对象遍历属性。
let arr=[{name:'aa',age:12},{name:'bb',age:13},{name:'cc',age:14}];for(let item in arr){console.log(item);}
let obj = {name:'aa',age:12,sex:'man'};for(let item in obj){console.log(item);}
7、find和findindex是查找,find找到一个就返回符合条件的数据,findIndex找到一个返回符合条件的下标,find找不到返回undefined,findindex找不到返回-1。
const Arr=[1,2,3];let num=Arr.find((x)=> x > 2);console.log(num); // 3
const Arr=[1,2,3];let num=Arr.findIndex((x)=> x > 2);console.log(num); // 2