ECMAScript5 [].reduce()

ECMAScript 5 的2个归并数组的方法,reduce() reduceRight()

两个方法都会迭代数组的所有项,然后构建一个最终返回的值。

两个参数:   1、函数,一个在每一项上调用的函数和             2、(可选的)作为归并基础的初始值。

第一个函数handlerReduce()接受4个参数

1、前一个值 2、当前值 3、项的索引 4、数组对象

这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。

利用reduce生成异步执行链function logInOrder(urls) {

// 远程读取所有URL textPromises保存了所有
  const textPromises = urls.map(url => {
    return fetch(url).then(response => response.text());
  });

   // 按次序输出 默认值为Promise.resolve()返回一个空的Promise对象 即第一次时的chain就是空的Promise对象
  textPromises.reduce((chain, textPromise) => {
    return chain.then(() => textPromise)
      .then(text => console.log(text));
  }, Promise.resolve());
}

空的Promise对象的then()函数执行下一个Promise对象的then(),然后then()再执行下一个Promise对象的then(),直到最后一个then()函数执行Promise.response或Promise.reject

async函数实现异步链

async function logInOrder(urls) {
  // 并发读取远程URL
  const textPromises = urls.map(async url => {
    const response = await fetch(url);
    return response.text();
  });

  // 按次序输出
  for (const textPromise of textPromises) {
    console.log(await textPromise);
  }
}
时间: 2024-10-30 10:16:28

ECMAScript5 [].reduce()的相关文章

js中map,forEach,filter,reduce等方法是ECMAScript5 Array新增方法

数组在各个编程语言中的重要性不言而喻,但是在之前的JavaScript中数组(JavaScript 数组详解)虽然功能已经很强大,但操作方法并不完善,在ECMAScript5中做了适当的补充. Array.isArray(element) 这是Array对象的一个静态函数,用来判断一个对象是不是数组 var a = new Array(123); var b = new Date(); console.log(Array.isArray(a)); //true console.log(Array

ECMAScript5 ES5

ECMAScript5新增一系列新的方法(API接口),新的浏览器中大部分是被支持的(IE9,Chrome,FirFor),有少量API不是所有浏览器都支 持 ES5通过对现有JavaScript方法添加语句和原生ECMAScript对象做合并实现标准化,IE9不支持严谨模式,但IE10是支持的. Object.create(prototype, descriptors) 以指定的原型创建对象,并且可以(可选)的设置对象的属性 function Poker(style, title, value

在JavaScript函数式编程里使用Map和Reduce方法

所有人都谈论道workflows支持ECMAScript6里出现的令人吃惊的新特性,因此我们很容易忘掉ECMAScript5带给我们一些很棒的工具方法来支持在JavaScript里进行函数编程,这些工具方法我们现在可以使用了.在这些函数方法里主要的是基于JavaScript 数组对象的map()方法和reduce()方法. 如果你如今还没有使用map()和reduce()方法,那么现在是时候开始使用了.如今绝大部分的JavaScript开发平台都与生俱来的支持ECMAScript5.使用Map方

ECMASCRIPT5新特性(转载)

Function 1: Object.create 这是一个很重要的改动,现在我们终于可以得到一个原型链干净的对象了.以前要创建一个类 Js代码   function Cat(name) { this.name   = name; this.paws   = 4; this.hungry = false; this.eaten  = []; } Cat.prototype = { constructor : Cat, play        : function () { this.hungry

ECMAScript5中新增的Array方法实例详解

ECMAScript5标准发布于2009年12月3日,它带来了一些新的,改善现有的Array数组操作的方法.(注意兼容性) 在ES5中,一共有9个Array方法:http://kangax.github.io/compat-table/es5/ Array.prototype.indexOf Array.prototype.lastIndexOf Array.prototype.every Array.prototype.some Array.prototype.forEach Array.pr

JS的内建函数reduce

reduce函数,是ECMAScript5规范中出现的数组方法.在平时的工作中,相信大家使用的场景并不多,一般而言,可以通过reduce方法实现的逻辑都可以通过forEach方法来变相的实现,虽然不清楚浏览器的js引擎是如何在C++层面实现这两个方法,但是可以肯定的是reduce方法肯定也存在数组的遍历,在具体实现细节上是否针对数组项的操作和存储做了什么优化,则不得而知. 数组的reduce方法的应用 reduce方法有两个参数,第一个参数是一个callback,用于针对数组项的操作:第二个参数

python的reduce()函数

reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值.(也就是最后一次是返回值) #reduce()函数 from functools import reduce def f(x,y): return x+y print(reduce(f, [1, 3, 5, 7, 9])) # 先计算头两个元素:f(1, 3),结果为4: # 再把结果和第3个元素计算:f(4, 5),结果为9: # 再把结果和第4个元素计算:f(9, 7),结

map和reduce的应用

这是一个利用map将字符串规范化(首字母大写,其余字母小写)的例子 #!/usr/bin/env python def lower2upper(s):     loop = 0     l = ''     for n in s:         if n.islower() and loop == 0:             l = l + n.upper()             loop += 1         elif n.isupper() and loop == 0:     

Python 函数之lambda、map、filter和reduce

1.lambda函数 lambda()是Python里的匿名函数,其语法如下: lambda [arg1[, arg2, ... argN]]: expression 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 if 1 == 1: name = 'evescn' else: name = 'gm' # 三元运算 name = 'evescn' if 1 == 1 else 'gm' 对于简单的函数,也存在一种简便的表示方式,即:lambda