CoffeeScript - 理解

在上一章中,我们学习了CoffeeScript提供的各种循环,及其变体.除此之外,CoffeeScript还提供了额外的循环结构,称为理解.

这些理解取代了其他编程语言中的 for 循环,如果我们显式添加可选的guard子句和当前数组索引的值.使用理解,我们可以迭代数组和对象,迭代数组的表达式是表达式,我们可以在函数中返回它们或分配给变量.

S.No.声明&描述
1for..in comprehensions

for..in 理解是CoffeeScript中基本的理解形式,使用它我们可以迭代列表或数组的元素.

2for..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

keyword

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]