博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组map vs foreach,及map、fliter、reduce的链式调用
阅读量:7114 次
发布时间:2019-06-28

本文共 1463 字,大约阅读时间需要 4 分钟。

1、map和foreach都是用来遍历数组用的,两者之间有什么区别呢?
  • map:遍历数组返回一个新的相同长度的数组
  • foreach:遍历数组返回undefined
  • 在遍历效率方面map要比foreach快
const arr = [2, 4, 6, 8, 10]arr.forEach((num, index) => {    return arr[index] = num * 2;});console.log(arr)const arr1 = [2, 4, 6, 8, 10]let doubled = arr1.map(num => {    return num * 2;});console.log(arr1)console.log(doubled)复制代码
  1. 适用场景
  • foreach:适用于遍历不改变数组值得情况
  • map:适用于数组的数据改变,并因为返回新的数组,可以同fliter、reduce链式操作如:
let arr = [1, 2, 3, 4, 5];let arr2 = arr.map(num => num * 2).filter(num => num > 5);// arr2 = [6, 8, 10]复制代码
  • map、fliter、reduce的联合使用,以获取dog的年龄为示例,常规写法
const data = [  {    name: 'Butters',    age: 3,    type: 'dog'  },  {    name: 'Lizzy',    age: 6,    type: 'dog'  },  {    name: 'Red',    age: 1,    type: 'cat'  },  {    name: 'Joey',    age: 3,    type: 'dog'  },];function getAges(data) {  let sum = 0;  for (var i = 0; i < data.length; i++){    if (data[i].type === 'dog'){      let tempAge = data[i].age;      sum += (tempAge * 7);    }  }  return sum;}// getAges(data) = 84复制代码
  • 改进1:
let ages = data  .filter((animal) => {    return animal.type === 'dog';}).map((animal) => {    return animal.age * 7}).reduce((sum, animal) => {    return sum + animal.age;});// ages = 84复制代码
  • 改进2:纯函数对于同一个输入终会有同样的输出,易于理解、可读、测试
let dogYears = (animal) => {  return animal.age * 7;}let dogYears = (animal) => {  return animal.age * 7;}let sum = (sum, animal) => {  return sum + animal;}let ages = data  .filter(isDog)  .map(dogYears)  .reduce(sum);// ages = 84复制代码

转载地址:http://dbwel.baihongyu.com/

你可能感兴趣的文章
sql server统计字段的值在某些范围内中的个数
查看>>
UEFI EVENT 全解
查看>>
python时间模块小结
查看>>
BZOJ3997:[TJOI2015]组合数学(DP,Dilworth定理)
查看>>
C# Application.DoEvents() 处理队列消息,防界面假死。
查看>>
python基础===python实现截图
查看>>
Django模型
查看>>
Quartus中代码字体大小的调整方法
查看>>
配置url防盗链、目录权限访问控制Directory、文件访问权限控制FilesMatch
查看>>
【spring boot】4.spring boot配置多环境资源文件
查看>>
关于datepicker如何获取月中日长
查看>>
神经网络练习四-ex4
查看>>
通用for_each清理容器模板函数
查看>>
MVC5发布到IIS,出现HTTP 错误 404.0 - Not Found的完美解决方法
查看>>
c# 与 java 语法异同
查看>>
cleanup failed because the file not under version control问题的解决
查看>>
html+css+js实现滑动导航条(转载)
查看>>
BZOJ 2039人员雇佣
查看>>
angular ng-repeat出来的数据 每条修改数据后返回给接口 如何取到每个对应修改的值...
查看>>
nodeJs express mongodb 建站(linux 版)
查看>>