underscore chain

//可以在面向对象或者函数的风格下使用Underscore_.map([1, 2, 3], function(n){ return n * 2; });   //一般习惯用这种
_([1, 2, 3]).map(function(n){ return n * 2; });

_.chain(obj):在封装对象上调用方法,会返回封装对象本身,原始值存放在_wrapped属性中;

_.value():获取封装对象的值;

对一个对象使用 chain 方法, 会把这个对象封装并 让以后每次方法的调用结束后都返回这个封装的对象, 当您完成了计算, 可以使用 value 函数来取得最终的值. 以下是一个同时使用了 map/flatten/reduce 的链式语法例子, 目的是计算一首歌的歌词里每一个单词出现的次数.

var lyrics = [
  {line: 1, words: "I‘m a lumberjack and I‘m okay"},
  {line: 2, words: "I sleep all night and I work all day"},
  {line: 3, words: "He‘s a lumberjack and he‘s okay"},
  {line: 4, words: "He sleeps all night and he works all day"}
];

_.chain(lyrics)
  .map(function(line) { return line.words.split(‘ ‘); })
  .flatten()
  .reduce(function(counts, word) {
    counts[word] = (counts[word] || 0) + 1;
    return counts;
  }, {})
  .value();

=> {lumberjack: 2, all: 4, night: 2 ... }

  

时间: 2024-10-13 23:54:15

underscore chain的相关文章

underscore 复习 对象函数 篇章

_.partial = function(func) { var boundArgs = slice.call(arguments, 1); var bound = function() { var position = 0, length = boundArgs.length; var args = Array(length); for (var i = 0; i < length; i++) { args[i] = boundArgs[i] === _ ? arguments[positio

underscore中文api (1.8.2)

Underscore一个JavaScript实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象.它是这个问题的答案:“如果我在一个空白的HTML页面前坐下, 并希望立即开始工作, 我需要什么?“...它弥补了部分jQuery没有实现的功能,同时又是Backbone.js必不可少的部分. (感谢@小邓子daj的翻译建议) Underscore提供了100多个函数,包括常用的: map, filter, invoke — 当然还有更多专业的辅助函数,如:函数绑定,

underscore.js源码解析

一直想针对一个框架的源码好好的学习一下编程思想和技巧,提高一下自己的水平,但是看过一些框架的源码,都感觉看的莫名其妙,看不太懂,最后找到这个underscore.js由于这个比较简短,一千多行,而且读起来容易一些,所以就决定是它了,那废话不多说开始我们的源码学习. underscore.js源码GitHub地址: https://github.com/jashkenas/underscore/blob/master/underscore.js 本文解析的underscore.js版本是1.8.3

UnderScore.jsAPI记录

Collection Functions (Arrays or Objects) each         _.each(list, iterator, [context]) 遍历list中的所有元素,如果传递了context参数,则把iterator绑定到context对象上.iterator的参数是 (value, key, list)).返回list以方便链式调用. _.each([1, 2, 3], alert); => alerts each number in turn... map

Underscore.js入门

1. Underscore对象封装 Underscore并没有在原生的JavaScript对象原型中进行扩展,而是像jQuery一样,将数据封装在一个自定义对象中(下文中称"Underscore对象"). 你可以通过调用一个Underscore对象的value()方法来获取原生的JavaScript数据,例如:  window.onload =   function () {          // 定义一个JavaScript内置对象            var jsData = 

backbone和underscore中的extend

总是把这两个库中的extend搞混了所以写下来. backbone中的extend实现了继承: 1 // Helper function to correctly set up the prototype chain for subclasses. 2 // Similar to `goog.inherits`, but uses a hash of prototype properties and 3 // class properties to be extended. 4 var exte

认识Underscore

Underscore一个JavaScript实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象.它弥补了部分jQuery没有实现的功能,同时又是Backbone.js必不可少的部分. 中文API:http://www.css88.com/doc/underscore/ 英文API: http://underscorejs.org/ GitHub仓库: https://github.com/jashkenas/underscore Underscore没有对原生

underscore.js库的浅析

Underscore并没有在原生的JavaScript对象原型中进行扩展,而是像jQuery一样,将数据封装在一个自定义对象中(下文称“Underscore对象”).生成一个Underscore对象: <script> var jsData = {     name : 'data' } // 通过_()方法将对象创建为一个Underscore对象 var underscoreData = _(jsData);   //_就是Underscore构造函数的标识 // underscoreDat

underscore.js

underscore是一个非常实用的javascript库,提供许多编程时需要的功能的支持,在不扩展任何javascript原生对象的情况下提供很多实用的功能.主要涉及对Collection.Object.Array.Function的操作.一共60多个函数. 函数介绍: 一.Collection Functions (Arrays or Objects) [集合函数]: 1.#each# _.each(list, iterator, [context]) 迭代list中的所有元素,按顺序用迭代