⑤. map和reduce
①. map接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回
②. reduce接收两个参数:
带两个参数的一个函数(必须):从头开始每次用两个数组元素执行 第一个元素和第二个元素先执行执行完后返回一个结果又和第三个数组元素执行以此类推
起始参数(非必须):即有该参数的话 将用该参数和数组第一个元素执行 返回结果再和第二个元素执行 以此类推
<script> //map接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回 //举例:有一个字符串数组,希望转为int数组 let arr = ['1','20','-5','3']; console.log("处理前数组的是:"+typeof arr[0]);//处理前数组的是:string /*使用map对数组进行处理*/ arr=arr.map(s=>parseInt(s)); console.log("处理后数组是:"+typeof arr[0]);//处理后数组是:number </script>
②. reduce()为数组中每一元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素
//reduce let arr2=[1,3,5,7] //1.没有初始值的情况下 /* a:上一次调用函数的值或者初始值,如果没有指定初始值,默认从数组第一个元素开始 b:数组中当前被处理的元素 */ let sum=arr2.reduce((a,b)=>{ console.log("上一次处理后:"+a); console.log("当前正在处理:"+b); return a+b }) /* 上一次处理后:1 当前正在处理:3 上一次处理后:4 当前正在处理:5 上一次处理后:9 当前正在处理:7 当前计算结果是:16 */ console.log(`当前计算结果是:${sum}`) //2. 指定初始值 /* 上一次处理后:100 当前正在处理:1 上一次处理后:101 当前正在处理:3 上一次处理后:104 当前正在处理:5 上一次处理后:109 当前正在处理:7 */ let sum2=arr2.reduce((a,b)=>{ console.log("上一次处理后:"+a); console.log("当前正在处理:"+b); return a+b },100)
⑥. 对象(Object)优化
①. Object.keys(obj):获取对象的所有key形成的数组
②. Object.values(obj):获取对象的所有value形成的数组
③. Object.entries(obj):获取对象的所有key和value形成的二维数组。格式:[[k1,v1],[k2,v2],…]
④. Object.assign 方法的第一个参数是目标对象,后面的参数都是源对象
<script> let obj={name:"tangzhi",age:24}; //1.获取对象的所有key形成的数组 console.log(Object.keys(obj));//Array [ "name", "age" ] //2.获取对象的所有value形成的数组 console.log(Object.values(obj));//Array [ "tangzhi", 24 ] //3.获取对象的所有key和value形成的二维数组。格式:[[k1,v1],[k2,v2],…] console.log(Object.entries(obj));//Array [ [ "name", "tangzhi" ],[ "age", 24 ] ] let a = { name: "TANGZHI" }; let b = { age: 25 }; let c = { gender: "男" }; //Object { name: "TANGZHI", age: 25, gender: "男" } console.log(Object.assign(a, b, c)); </script>