草庐IT

遍历器

xuawei 2023-03-28 原文

一, 遍历器的定义
  取出数据容器中的每一个元素的工具

二, 遍历器的分类
  1.for 遍历数组(最重要,兼容性好)
    例:
    

  2.for in遍历对象
例:遍历数组

    

例:遍历对象

    

3.while遍历
例:

    

4.forEach():
数组遍历的forEach方法
例:
    

//12 0 [12, 45, 25]
//45 1 [12, 45, 25]
//25 2 [12, 45, 25]

//传进去的函数的第一个参数必须有,第二三个参数可以没有
//但是要传了index后面才能访问出来index
//undefined----->forEach方法返回值
设计自己的forEach方法:

       

5. map():
//数组遍历的map方法

    

   //与forEach相似,都为三个参数,但是不同之处就在return一个数组(可指定)

//map和forEach方法只能用来遍历数组,不能用来遍历对象

例: // 需求:
//打印[{name:"jack",birth:"2002-02-03",age:20},{name:"jack",birth:"2003-02-03",age:19}]

    

6.filter():
//数组遍历的filter方法

// 过滤数组中的元素,会返回通过过滤的元素(是否为真,从而返回值),不改变原数组
例:

    

7.some()
// 数组遍历的some方法
    

设计源代码mySome

    

Array.prototype.mysome=function(callback){
for( var i=0;i<this.length;i++){
if(callback(this[i],i,this)){return true}//返回true就跳出循环
}
return false
}
var arr=[54,45,25]
var re=arr.mysome(function(el){
console.log(el)
return el>54}}
console.log(re) //结果返回最后的结果
8.every()方法

    

   //数组中只要有一个不符合就返回false

  //全部符合返回true

  //对空数组不进行检查

  //不会改变原来的数组

9.数组对象的属性累加举例
(1)for

    

(2)reduce()
//第一次调用是前两个值,第二次调用参数为第一次的返回值和第三个值

var arr = [{
title: "番茄鸡蛋",
price: 18,
count: 2
},
{
title: "米饭",
price: 1,
count: 5
},
{
title: "麻辣鱼",
price: 28,
count: 1
},
{
title: "火锅",
price: 50,
count: 1
}
]

var re1=arr.reduce(function(n1,n2){
// console.log(n1,n2)
return n1+n2.price*n2.count
},0)
console.log(re1,1111)         //119 1111

var re2=arr.reduce(function(n1,n2){
if(!n1.total){
n1.total=n1.price*n1.count+n2.price*n2.count
}
else{
n1.total=n1.total+n2.price*n2.count
}
return n1
})
console.log(re2,2222)      //{title: '番茄鸡蛋', price: 18, count: 2, total: 119} 2222

(3)eval()方法

    

10.数组遍历的reduceRight()方法

    

var arr=[12,45,25]
arr.reduceRight(function(n1,n2){
console.log(n1,n2)    //从后往前累加
},0)        //reduceRight的第二个参数为相加的初始值,可填可不填

11.for of (es6中的新出的功能)

  //可以遍历数组中的每一项

    

 

  //可以遍历数组中对象的每一项属性,输出属性值

    

与for in 的区别

  //for of 无法遍历对象  

                       

 

结果:

    

 

  //for of遍历输出属性值(数组值),for in 遍历输出下标(索引)

    

  //for in 会遍历自定义属性,for of 不会(即遍历数组中的数组)

       

 

有关遍历器的更多相关文章

  1. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

  2. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  3. ruby - Chef Ruby 遍历 .erb 模板文件中的属性 - 2

    所以这可能有点令人困惑,但请耐心等待。简而言之,我想遍历具有特定键值的所有属性,然后如果值不为空,则将它们插入到模板中。这是我的代码:属性:#===DefaultfileConfigurations#default['elasticsearch']['default']['ES_USER']=''default['elasticsearch']['default']['ES_GROUP']=''default['elasticsearch']['default']['ES_HEAP_SIZE']=''default['elasticsearch']['default']['MAX_OP

  4. ruby - 如何遍历 Ruby 中所有正则表达式匹配的字符串? - 2

    我们有一个字符串:“”这个正则表达式://i如何从当前字符串中获取所有匹配项? 最佳答案 "".scan(//)参见scan在ruby​​-docs上 关于ruby-如何遍历Ruby中所有正则表达式匹配的字符串?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6857852/

  5. ruby - 循环遍历数组的元素 - 2

    我想从0到2循环@a:0,1,2,0,1,2。defset_aif@a==2@a=0else@a=@a+1endend也许有更好的方法? 最佳答案 (0..2).cycle(3){|x|putsx}#=>0,1,2,0,1,2,0,1,2item=[0,1,2].cycle.eachitem.next#=>0item.next#=>1item.next#=>2item.next#=>0... 关于ruby-循环遍历数组的元素,我们在StackOverflow上找到一个类似的问题:

  6. ruby-on-rails - 如何在 Rails View 中遍历数组? - 2

    我在MySql中进行了查询,但在Rails和mysql2gem中工作。信息如下:http://sqlfiddle.com/#!2/9adb8/6查询工作正常,没有问题,并显示以下结果:UNITV1A1N1V2A2N2V3A3N3V4A4N4V5A5N5LIFE200120000000000ROB010012000000000-为rails2.3.8安装了mysql2gemgeminstallmysql2-v0.2.6-创建Controller:classPolicyController这是日志:SQL(0.9ms)selectdistinct@sql:=concat('SELECTpb

  7. ruby - Ruby 中的目录遍历 - 2

    我一直在尝试使用简单的递归方法在Ruby中为一个更大的程序的一部分实现目录遍历。但是我发现Dir.foreach不包括其中的目录。我怎样才能列出它们?代码:defwalk(start)Dir.foreach(start)do|x|ifx=="."orx==".."nextelsifFile.directory?(x)walk(x)elseputsxendendend 最佳答案 问题是每次递归,你传递给File.directory?的路径isno只是实体(文件或目录)名称;所有上下文都丢失了。所以说你进入one/two/three/检

  8. ruby - 遍历目录和子目录中的每个 .jpg 或 .jpeg 文件 - 2

    我想遍历目录中的每个jpg/jpeg文件以及每个子目录和该子目录的每个子目录等等。我希望能够浏览文件夹中的每个图像文件。有没有一种简单的方法可以做到这一点,或者递归方法是否效果最好? 最佳答案 Dir.glob("your_directory/**/*.{jpg,jpeg}") 关于ruby-遍历目录和子目录中的每个.jpg或.jpeg文件,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

  9. Ruby 的 "each"方法没有遍历数组中的所有项目? - 2

    我正在尝试以下代码:a=[1,2,3,4]a.eachdoputs"Removing#{a.last}"a.popend但我并没有弹出所有四个数字,而是只弹出了前3个数字。实际上,执行类似putsa.length的操作会返回1并且puts-ing显示元素“1”仍然存在。我需要如何正确使用该方法?(我正在使用Ruby2.0)。 最佳答案 我怀疑发生这种情况是因为您在修改列表时迭代了列表的元素。尝试以下操作:a=[1,2,3,4]untila.empty?doputs"Removing#{a.last}"a.popend

  10. ruby - 遍历包含键/数组值对的散列,并遍历每个值 - 2

    我有一个看起来像这样的散列:{"key1":["value1","value2","value3"],"key2":["value1","value2","value3","value4","value5"],"key3":["value1"],"key4":["value1","value2"]}如何遍历每个keyN,同时循环遍历该键中的所有值?如果有帮助,我有一个包含所有键的数组。谢谢 最佳答案 非常简单,真的:hash.eachdo|name,values|values.eachdo|value|#...endend您可以在最

随机推荐