首页 > 其他分享 >js map和reduce

js map和reduce

时间:2022-10-22 11:08:07浏览次数:48  
标签:map arr reduce js x2 var Array

map

举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个数组​​[1, 2, 3, 4, 5, 6, 7, 8, 9]​​上,就可以用​​map​​实现如下:

js map和reduce_高阶函数

由于​​map()​​方法定义在JavaScript的​​Array​​中,我们调用​​Array​​的​​map()​​方法,传入我们自己的函数,就得到了一个新的​​Array​​作为结果:

'use strict';

function pow(x) {
return x * x;
}

 Run

注意:​​map()​​传入的参数是​​pow​​,即函数对象本身。

你可能会想,不需要​​map()​​,写一个循环,也可以计算出结果:

var f = function (x)
return x * x;
};

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var result = [];
for (var i=0; i<arr.length; i++) {
result.push(f(arr[i]));
}

的确可以,但是,从上面的循环代码,我们无法一眼看明白“把f(x)作用在Array的每一个元素并把结果生成一个新的Array”。

所以,​​map()​​作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把​​Array​​的所有数字转为字符串:

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.map(String); // ['1', '2', '3', '4', '5', '6', '7', '8', '9']

只需要一行代码。

reduce

再看reduce的用法。Array的​​reduce()​​把一个函数作用在这个​​Array​​的​​[x1, x2, x3...]​​上,这个函数必须接收两个参数,​​reduce()​​把结果继续和序列的下一个元素做累积计算,其效果就是:

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)

比方说对一个​​Array​​求和,就可以用​​reduce​​实现:

var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y)
return x + y;
}); // 25

练习:利用​​reduce()​​求积:

'use strict';

function product(arr) {


标签:map,arr,reduce,js,x2,var,Array
From: https://blog.51cto.com/wusen/5785704

相关文章

  • 今天聊下Java中的HashMap---Java中用的就很多的集合框架
    先说下HashMap的定义HashMap是一个散列表,存储的内容是键值对(key-value)映射。HashMap实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键......
  • HashMap 源码分析(五)
    ......
  • HashMap
    在jdk1.7版本其底层结构是:数组+链表在jdk1.8版本之后底层结构修改成为:数组+链表+红黑树在扩容机制上:jdk1.7:当满足扩容条件后-->其初始默认的容量为16,每次扩容都×2;......
  • Newtonsoft.Json笔记 -JToken、JObject、JArray详解
    在原来解析json数据是,一般都是用反序列化来实现json数据的解读,这需要首先知道json数据的结构并且建立相应的类才能反序列化,一旦遇到动态的json数据,这种方法就不使用。为了......
  • Content-type的application/json的意义?
    网站服务器编程中,前后端分离在很多项目中流行开来了。前端的静态页面,不断的发送AJAX请求给后端,以获取数据来动态改变呈现。使用什么数据格式进行交互的呢?答案是JS......
  • js统计字符串每个字符出现的次数
    统计下面字符串中每个字符出现的频率letstr="fgasdfadfdasd"letresult={}for(leti=0;i<[...str].length;i++){if(!result[[...str][i]]){res......
  • 【json报错】java json can not cast to JSONObject 报错解决方法【java json】【
     请问:如下:是否会报错?  解决方法:请先格式化json,再转对象。   原因:后端只图省事,直接这样写:获取的是json字符串没有转换直接put.   返回的报文就会不......
  • nodeJS入门
    目录NodeJs介绍NodeJs运行使用模块化模块组成require函数exports导出对象module模块对象npm和package.json文件npmpackage.jsonNodejs作用域Nodejs异步编程实现的三......
  • 某某某某招某某某 网站js登录加密方式。
    1.135分析后为AES加密。加密流程constCryptoJS=require('crypto-js');//引用AES源码jsconste=JSON.parse('{"data":{"password":"123456"},"key":"pigxpigxpi......
  • 想到一种用json描述Qt弹性布局的方式
    规则:列表第一项描述 QHBox or QVBox 第二项描述是否可拉伸,也就是QBox or QSplitter列表可嵌套 渲染:deffun(self,ui):ifui[0]=="H":......