- CoffeeScript 教程
- CoffeeScript - 首页
- CoffeeScript - 概述
- CoffeeScript - 环境
- CoffeeScript - 命令行工具
- CoffeeScript - 语法
- CoffeeScript - 数据类型
- CoffeeScript - 变量
- CoffeeScript - 运算符和别名
- CoffeeScript - 条件语句
- CoffeeScript - 循环
- CoffeeScript - 推导式
- CoffeeScript - 函数
- CoffeeScript 面向对象
- CoffeeScript - 字符串
- CoffeeScript - 数组
- CoffeeScript - 对象
- CoffeeScript - 范围
- CoffeeScript - 展开运算符
- CoffeeScript - 日期
- CoffeeScript - 数学
- CoffeeScript - 异常处理
- CoffeeScript - 正则表达式
- CoffeeScript - 类和继承
- CoffeeScript 高级
- CoffeeScript - Ajax
- CoffeeScript - jQuery
- CoffeeScript - MongoDB
- CoffeeScript - SQLite
- CoffeeScript 有用资源
- CoffeeScript - 快速指南
- CoffeeScript - 有用资源
- CoffeeScript - 讨论
CoffeeScript - 推导式
在上一章中,我们学习了 CoffeeScript 提供的各种循环,while 及其变体。除此之外,CoffeeScript 还提供了额外的循环结构,称为推导式。
如果我们添加可选的保护子句并显式地指定当前数组索引的值,这些推导式将替换其他编程语言中的for循环。使用推导式,我们可以迭代数组和对象,迭代数组的推导式是表达式,我们可以将其在函数中返回或赋值给变量。
序号 | 语句和描述 |
---|---|
1 | for..in 推导式
for..in 推导式是 CoffeeScript 中推导式的基本形式,我们可以用它来迭代列表或数组的元素。 |
2 | for..of 推导式
就像数组一样,CoffeeScript 提供了用于存储键值对的容器,称为对象。我们可以使用 CoffeeScript 提供的for..of 推导式来迭代对象。 |
3 | 列表推导式
CoffeeScript 中的列表推导式用于将对象数组映射到另一个数组。 |
索引推导式
元素列表/数组具有一个索引,可以在推导式中使用。您可以像下面所示那样在推导式中使用变量。
for student,i in [element1, element2, element3]
示例
以下示例演示了在 CoffeeScript 中使用for…in 推导式索引的方法。将此代码保存在名为for_in_index.coffee的文件中。
for student,i in ['Ram', 'Mohammed', 'John'] console.log "The name of the student with id "+i+" is: "+student
打开命令提示符并编译 .coffee 文件,如下所示。
c:\> coffee -c for_in_index.coffee
编译后,它会生成以下 JavaScript 代码。
// Generated by CoffeeScript 1.10.0 (function() { var i, j, len, ref, student; ref = ['Ram', 'Mohammed', 'John']; for (i = j = 0, len = ref.length; j < len; i = ++j) { student = ref[i]; console.log("The name of the student with id " + i + " is: " + student); } }).call(this);
现在,再次打开命令提示符并运行 CoffeeScript 文件,如下所示。
c:\> coffee for_in_index.coffee
执行后,CoffeeScript 文件会产生以下输出。
The name of the student with id 0 is: Ram The name of the student with id 1 is: Mohammed The name of the student with id 2 is: John
推导式的后缀形式
就像后缀if和unless一样,CoffeeScript 提供了推导式的后缀形式,这在编写代码时非常方便。使用它,我们可以将for..in 推导式写成一行,如下所示。
#Postfix for..in comprehension console.log student for student in ['Ram', 'Mohammed', 'John'] #postfix for..of comprehension console.log key+"::"+value for key,value of { name: "Mohammed", age: 24, phone: 9848022338}显示示例
赋值给变量
我们用来迭代数组的推导式可以赋值给变量,也可以由函数返回。
示例
考虑以下示例。在这里,您可以看到我们使用for..in 推导式检索了数组的元素,并将其赋值给名为names的变量。我们还有一个函数,它使用return关键字显式地返回一个推导式。将此代码保存在名为example.coffee的文件中。
my_function =-> student = ['Ram', 'Mohammed', 'John'] #Assigning comprehension to a variable names = (x for x in student ) console.log "The contents of the variable names are ::"+names #Returning the comprehension return x for x in student console.log "The value returned by the function is "+my_function()
打开命令提示符并编译 .coffee 文件,如下所示。
c:\> coffee -c example.coffee
编译后,它会生成以下 JavaScript 代码。
// Generated by CoffeeScript 1.10.0 (function() { var my_function; my_function = function() { var i, len, names, student, x; student = ['Ram', 'Mohammed', 'John']; names = (function() { var i, len, results; results = []; for (i = 0, len = student.length; i < len; i++) { x = student[i]; results.push(x); } return results; })(); console.log("The contents of the variable names are ::" + names); for (i = 0, len = student.length; i < len; i++) { x = student[i]; return x; } }; console.log("The value returned by the function is " + my_function()); }).call(this);
现在,再次打开命令提示符并运行 CoffeeScript 文件,如下所示。
c:\> coffee example.coffee
执行后,CoffeeScript 文件会产生以下输出。
The contents of the variable names are ::Ram,Mohammed,John The value returned by the function is Ram
by 关键字
CoffeeScript 提供范围来定义元素列表。例如,范围 [1..10] 等效于 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],其中每个元素都递增 1。我们也可以使用推导式的by关键字来更改此增量。
示例
以下示例演示了 CoffeeScript 提供的for..in 推导式的by关键字的使用方法。将此代码保存在名为by_keyword_example.coffee的文件中。
array = (num for num in [1..10] by 2) console.log array
打开命令提示符并编译 .coffee 文件,如下所示。
c:\> coffee -c by_keyword_example.coffee
编译后,它会生成以下 JavaScript 代码。
// Generated by CoffeeScript 1.10.0 (function() { var array, num; array = (function() { var i, results; results = []; for (num = i = 1; i <= 10; num = i += 2) { results.push(num); } return results; })(); console.log(array); }).call(this);
现在,再次打开命令提示符并运行 CoffeeScript 文件,如下所示。
c:\> coffee by_keyword_example.coffee
执行后,CoffeeScript 文件会产生以下输出。
[ 1, 3, 5, 7, 9 ]