在上一章中,我们学习了CoffeeScript提供的各种循环,而及其变体.除此之外,CoffeeScript还提供了额外的循环结构,称为理解.
这些理解取代了其他编程语言中的 for 循环,如果我们显式添加可选的guard子句和当前数组索引的值.使用理解,我们可以迭代数组和对象,迭代数组的表达式是表达式,我们可以在函数中返回它们或分配给变量.
S.No. | 声明&描述 |
---|---|
1 | for..in comprehensions for..in 理解是CoffeeScript中基本的理解形式,使用它我们可以迭代列表或数组的元素. |
2 | for..of comprehensions 就像Arrays CoffeeScriptScript提供了一个容器来存储称为对象的键值对.我们可以使用CoffeeScript提供的 for..of 理解来迭代对象. |
3 | list comprehensions CoffeeScript中的 list 理解用于将对象数组映射到另一个数组. |
元素的列表/数组具有可用于理解的索引.您可以使用如下所示的变量在理解中使用它.
for student,i in [element1,element2,element3]
以下示例演示了CoffeeScript中 for ... in 理解的索引用法.将此代码保存在名为 for_in_index.coffee
for student的文件中,我在['Ram'中, 'Mohammed','John'] console.log"id为"+ i +"的学生姓名为:"+ student
打开命令提示符并编译.coffee文件,如下所示.
c:\> coffee -c for_in_index.coffee
在编译时,它会为您提供以下JavaScript.
//由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("id为"+ i +"的学生姓名为:"+ student"; } }).call(this);
现在,再次打开命令提示符并运行CoffeeScript文件,如下所示.
c:\> coffee for_in_index.coffee
执行时,CoffeeScript文件会产生以下输出.
身份0的学生姓名是:Ram 身份1的学生姓名是:Mohammed 身份2的学生姓名是:John
就像postfix if 和除非一样,CoffeeScript提供了理解的后缀形式,在编写代码时很方便.使用它,我们可以在一行中写出 for..in 理解,如下所示.
#Postfix for..in comprehension console.log学生为['Ram','Mohammed','John']学生 #postfix for..of comprehension console. log key +"::"+ key的值,{name:"Mohammed"的值,年龄:24,电话:9848022338}
我们用来迭代数组的理解可以分配给一个变量,也由一个函数返回.
考虑下面给出的例子.在这里,您可以观察到我们使用 for..in 理解检索了数组的元素,并将其分配给名为 names 的变量.我们还有一个函数,它使用 return 关键字显式返回一个理解.将此代码保存在名称为 example.coffee
my_function = - >的文件中 student = ['Ram','Mohammed','John'] #Acigning to a variable names =(x for x in student) console.log"变量的内容是::"+名称 #Returning理解 在学生 控制台中返回x for x .log"函数返回的值是"+ my_function()
打开命令提示符并编译.coffee文件如下所示.
c:\> coffee -c example.coffee
在编译时,它会为您提供以下JavaScript.
//由CoffeeScript生成1.10.0 (function(){ var my_function; my_function = function(){ var i, len,姓名,学生,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); } 返回结果; })(); console.log("变量名称的内容是::"+名称); for(i = 0,len = student.length; i< len; i ++){ x = student [i]; return x; } }; console.log("函数返回的值是"+ my_function()); }).call(this);
现在,再次打开命令提示符并运行CoffeeScript文件,如下所示.
c:\> coffee example.coffee
执行时,CoffeeScript文件产生以下输出.
变量名称的内容是:: Ram,Mohammed,John 函数返回的值是Ram
CoffeeScript提供了定义元素列表的范围.例如,范围[1..10]相当于[1,2,3,4,5,6,7,8,9,10],其中每个元素都递增1.我们也可以改变这个增量使用理解的按关键字.
以下示例演示 by
array =(num为[1]中的num .10] by 2) console.log数组
打开命令提示符并将.coffee文件编译为如下所示.
c:\> coffee -c by_keyword_example.coffee
在编译时,它会为您提供以下JavaScript.
//由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) ; } 返回结果; })(); console.log(数组); }).call(这个);
现在,再次打开命令提示符并运行CoffeeScript文件,如下所示.
c:\> coffee by_keyword_example.coffee
执行时,CoffeeScript文件产生以下输出.
[1,3,5,7,9]