CoffeeScript

JavaScript

CoffeeScript 筛选数组

21 0

筛选数组 问题 你想要根据布尔条件来筛选数组。 解决方案 使用Array.filter (ECMAScript 5): array = [1..10] array.filter (x) -> x > 5 # => [6,7,8,9,10]在EC5之前的实现中,可以通过添加一个筛选函数扩展Array的原型,该函数接受一个回调并对自身进行过滤,将回调函数返回true的元素收集起来。# 扩展 Array 的原型 Array::filter = (callback) ->element f

JavaScript

CoffeeScript 比较范围

32 0

比较范围 问题 如果你想知道某个变量是否在给定的范围内。 解决方案 使用CoffeeScript的连缀比较语法。maxDwarfism = 147 minAcromegaly = 213height = 180normalHeight = maxDwarfism < height < minAcromegaly # => true 讨论 这是从Python中借鉴过来的一个很棒的特性。利用这个特性,不必像下面这样写出完整的比较:normalHeight = height > maxD

JavaScript

CoffeeScript 检测与构建丢失的函数

32 0

检测与构建丢失的函数 问题 你想要检测一个函数是否存在,如果不存在则构建该函数。(比如Internet Explorer 8的ECMAScript 5函数)。 解决方案 使用存在赋值运算符(?=)来把函数分配给类库的原型(使用::简写),然后把它放于一个立即执行函数表达式中(do ->)使其含有所有变量。do -> Array::filter ?= (callback) ->element for element in this when callback elementarray =

JavaScript

CoffeeScript 把字符串转换为大写形式

29 0

把字符串转换为大写形式 问题 你想把字符串转换成大写形式。 解决方案 使用JavaScript的String的toUpperCase()方法:"one two three".toUpperCase() # => 'ONE TWO THREE' 讨论 toUpperCase()是一个标准的JavaScript方法。不要忘了带圆括号。 语法块 通过下面的快捷方式可以添加某种类似Ruby的语法块:String::upcase = -> @toUpperCase()

JavaScript

CoffeeScript 计算两个日期中间的天数

29 0

计算两个日期中间的天数 问题 你需要找出两个日期间隔了几年,几个月,几天,几个小时,几分钟,几秒。 解决方案 利用JavaScript的日期计算函数getTime()。它提供了从1970年1月1日开始经过了多少毫秒。DAY = 1000 * 60 * 60 * 24d1 = new Date('02/01/2011') d2 = new Date('02/06/2011')days_passed = Math.round((d2.getTime() - d1.getTim

JavaScript

CoffeeScript 策略模式

30 0

策略模式 问题 解决问题的方式有多种,但是你需要在程序运行时选择(或是转换)这些方法。 解决方案 在策略对象(Strategy objects)中封装你的算法。 例如,给定一个未排序的列表,我们可以在不同情况下改变排序算法。 基类StringSorter = (algorithm) ->sort: (list) -> algorithm list 策略bubbleSort = (list) ->anySwaps = falseswapPass = ->for r in [0..li

JavaScript

CoffeeScript 双向服务器

28 0

双向服务器 问题 你想通过网络提供持续的服务,与客户保持持续的联系。 解决方案 创建一个双向TCP服务器。 在 Node.js 中net = require 'net'domain = 'localhost' port = 9001server = net.createServer (socket) ->console.log "New connection from #{socket.remoteAddress}"socket.on 'd

JavaScript

CoffeeScript 当函数括号不可选

25 0

当函数括号不可选 问题 你想要调用一个没有参数的函数,但不希望使用括号。 解决方案 不管怎样都使用括号。 另一个方法是使用do表示法,如下:notify = -> alert "Hello, user!" do notify if condition 编译成JavaScript则可表示为:var notify; notify = function() {return alert("Hello, user!"); }; if (condition) {notif