2.4 reduceRight

2.4.1 语法:

_.reduceRight(list, iteratee, memo, [context])

2.3.2 说明:

reduceRight和reduce一样把list中元素归结为一个单独的数值,区别是reduceRight从list右边开始遍历。

2.3.3 代码示例:

示例一:用reduceRight精简数组

var list = [
[0, 1],
[2, 3],
[4, 5]
]; var flat = _.reduceRight(list, function (memo, element) {
return memo.concat(element);
}); console.log(flat); //= > [4, 5, 2, 3, 0, 1]

示例二:list也可以字符串

var flat = _.reduceRight('0123456789', function (a, b) {
return a.concat(b); //返回数组
}, []); //试试这里的数组不传会如何 console.log(flat); //= > ["9", "8", "7", "6", "5", "4", "3", "2", "1", "0"]

示例三:context可以改变iteratee内部的this

var data = [{name: 'iori'}, {name: 'kyo'}];
var context = {city : 'hangzhou'}; var html = _.reduceRight(data, function(memo, element){
return memo + '<p>' + this.city + ':' + element.name + '</p>';
}, '', context); console.log(html); //=> <p>hangzhou:kyo</p><p>hangzhou:iori</p>

2.3.4 context如果是null或undefined会是什么情况(坑)

_.reduceRight([1, 2], function (memo, element) {
console.log(this); //this已经不是null了
return memo + this;
}, '', null);

2.3.5 _.flodr是_.reduceRight的别名

var flat = _.foldr([[1], 2, 3], function (memo, element) {
return memo.concat(element);
}, []);
console.log(flat); //=> [3, 2, 1]

gitbook地址:https://www.gitbook.com/book/niec-fe/underscorejs/details

underscorejs-reduceRight学习的更多相关文章

  1. 不学就吃亏的underscorejs类库学习示例 ——(集合篇)

    underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...

  2. JavaScript学习笔记:数组reduce()和reduceRight()方法

    很多时候需要累加数组项的得到一个值(比如说求和).如果你碰到一个类似的问题,你想到的方法是什么呢?会不会和我一样,想到的就是使用for或while循环,对数组进行迭代,依次将他们的值加起来.比如: v ...

  3. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  4. 我JSP学习心得1

    老师布置了一项作业,说是要按着老师的要求写,但我觉得只要是技术分享的心得就是好的,不论是不是所要求的内容. 由于和几个人在外面给别人搭建网站,项目需要学习了jsp有用到了javascript,这里有一 ...

  5. 《JavaScript高级程序设计》学习笔记(4)——引用类型

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...

  6. backbone库学习-Collection

    backbone库的结构: http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.html 本文所有例子来自于http://blog.cs ...

  7. javascript Array 方法学习

    原生对象Array学习 Array.from()   从类似数组的对象或可迭代的对象返回一个数组 参数列表 arraylike  类似数组的对象或者可以迭代的对象 mapfn(可选)   对对象遍历映 ...

  8. Backbone学习笔记一Backbone中的MVC

    原文章地址http://bigdots.github.io/2015/12/01/Backbone学习笔记(一)/#more Backbone.js为复杂WEB应用程序提供模型(models).集合( ...

  9. JavaScript学习总结-技巧、有用函数、简洁方法、编程细节

    整理JavaScript方面的一些技巧.比較有用的函数,常见功能实现方法,仅作參考 变量转换 //edit http://www.lai18.com var myVar = "3.14159 ...

  10. JavaScript高级程序设计(第三版)学习,第一次总结

    Array类型 var arr = []; arr.length; //返回数组元素个数 改变length可以动态改变数组大小 检测数组 instanceof可以检测某个对象是否是数组,限制:只能是一 ...

随机推荐

  1. 互联网组织的未来:剖析GitHub员工的任性之源

    转自:http://www.php100.com/html/it/hulianwang/2015/0108/8304.html [导读] 本文为大家介绍了著名代码托管服务商GitHub的组织运转结构. ...

  2. matlab制造一个64*64的仿真数据

    fid = fopen('test_001.img','w'); r=random('Normal',100,0,64,64); z=random('Uniform',0,5,64,64); %%%% ...

  3. android实现图片识别的几种方法

    实现android图像识别的几种方法 点击这里下载第一种代码 最近完成了毕业设计,论文名为基于图像识别的移动人口管理系统.编写过程中学到了几种图像识别的技术,先写下来与大家分享. 第一种,直接使用免费 ...

  4. 关于TCP的粘包和拆包

    问题产生 一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和封包问题. 下面可以看一张图,是客户端向服务端发送包: 1. 第一种情况 ...

  5. top -bcn -1

    ^[[?1h^[=^[[?25l^[[H^[[2J^[(B^[[mtop #!/bin/bash#echo 性能数据捕捉时间: `date +%Y-%m-%d_%H:%M:%S` \n >> ...

  6. kafka入门教程

    1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有哪两个条件 ...

  7. python2.+进化至python3.+ 语法变动差异(不定期更新)

    1.输出 python2.+ 输出: print "" python3.+ 输出: print ("") 2.打开文件 python2.+ 打开文件: file ...

  8. Amoeba for MySQL 非常好用的mysql集群软件

    http://docs.hexnova.com/amoeba/ Amoeba for MySQL致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当query 路由功能,专 ...

  9. LayoutInflater和inflate()方法的使用方法

    public static LayoutInflaterfrom(Context context) { LayoutInflaterLayoutInflater = (LayoutInflater)c ...

  10. [转] C++临时变量的生命周期

    http://www.cnblogs.com/catch/p/3251937.html C++中的临时变量指的是那些由编译器根据需要在栈上产生的,没有名字的变量. 主要的用途主要有两类: 1) 函数的 ...