map
map() 用于接收一个函数, 将原数组中的所有元素用这个函数处理后,放入新数组返回
let arr = ['1','10','333'];
// 传统写法
// arr = arr.map((item) =>{
// return item*2;
// })
//一行的写法
//map() 用于接收一个函数, 将原数组中的所有元素用这个函数处理后,放入新数组返回
arr = arr.map(item =>item*2);
console.log(arr);
控制台打印如下, 可以看到arr 数组里面的元素都乘以了2
arr.reduce(callback,[initialValue]) callback 为执行数组中每个值的函数, 包含四个参数 1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue)) 2、currentValue (数组中当前被处理的元素) 3、index (当前元素在数组中的索引) 4、array (调用 reduce 的数组)
代码示例
//定义初始的数组
let arr = [1,10];
let result = arr.reduce((a,b)=>{
console.log("上一次处理后:"+a);
console.log("当前正在处理:"+b);
return a + b;
},100); ///设置初始值为100
控制台打印如下, 第一行打印100, 为设定的初始值. 第二行,正在处理1 , 代表遍历到1 , 101为 1+100的结果. 之后遍历到10 , 最终返回的结果为 1+10+100= 111 字符串数组中, 字符串内容为数字的小坑
如下的代码定义字符串的数据, 且没有进行任何的数字运算, 进行reduce操作
let arr = ['1','10','333'];
let result = arr.reduce((a,b)=>{
console.log("上一次处理后:"+a);
console.log("当前正在处理:"+b);
return a + b;
},100);
console.log(result)
结果如下, 代表 字符串的拼接 如果中途有数字的运算, 代码如下
let arr = ['1','10','333'];
//乘以2的数字运算
arr = arr.map(item =>item*2);
let result = arr.reduce((a,b)=>{
console.log("上一次处理后:"+a);
console.log("当前正在处理:"+b);
return a + b;
},100);
console.log(result)
结果如下, 说明字符串数组, 存储数字的字符串, 如果中间有数字运算, 会自动转化为数字类型, 反之没如果没有数学运算 , 则不会进行转化, 而是保持字符串类型 .