博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
循环的几种类型
阅读量:6328 次
发布时间:2019-06-22

本文共 2007 字,大约阅读时间需要 6 分钟。

图片描述

循环遍历数组的时候,你还在用for语句走天下吗?

我曾经就是for走天下,最后发现自己给自己挖了一个巨大的坑,层层嵌套的循环,总要花大量的时间去捋清各种逻辑关系,很容易逻辑混乱。终于你经过千辛万苦把逻辑捋清了,实现了功能需求。可是这时候接踵而来的问题来了?性能,扩展性,重用性....等等,合着我费了九牛二虎之力白费了。这时候一把鼻涕一把泪,满是辛酸;

这时候某人说,有很多好用的API,你为什么不去用呢?此刻恍然大悟。

数组(Array)

方法对数组的每个元素执行一次提供的函数。

array.forEach(callback(currentValue, index, array){            //do something        }, this)

参数

callback:为数组中每个元素执行的函数,该函数接收三个参数:

currentValue(当前值):数组中正在处理的当前元素。

index(索引): 数组中正在处理的当前元素的索引。

array: forEach()方法正在操作的数组。

thisArg可选:可选参数。当执行回调 函数时用作this的值(参考对象)。

返回值:undefined.

方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

const new_array = arr.filter(callback[, thisArg])

callback :用来测试数组的每个元素的函数。调用时使用参数 (element, index, array)。返回true表示保留该元素(通过测试),false则不保留。

thisArg : 可选。执行 callback 时的用于 this 的值。

返回值: 一个新的通过测试的元素的集合的数组

创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

let new_array = arr.map(function callback(currentValue, index, array) {         // Return element for new_array     }[, thisArg])

callback : 生成新数组元素的函数,使用三个参数:

currentValue : callback 的第一个参数,数组中正在处理的当前元素。

index : callback 的第二个参数,数组中正在处理的当前元素的索引。

array: callback 的第三个参数,map 方法被调用的数组。

thisArg:可选的。执行 callback 函数时 使用的this 值。

: 如果数组中的每个元素都满足测试函数,则返回 true,否则返回 false。

: 如果数组中至少有一个元素满足测试函数,则返回 true,否则返回 false。

<span style='color:rgb(230,3,135);'> 也许明天我们不在用for走天下,取而替代的是 for of</span>

语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。

for ( variable of iterable)迭代Array:let iterable = [10, 20, 30];for (let value of iterable) {    console.log(value+1);}// 11,21,31迭代String:let iterable = "boo";for (let value of iterable) {  console.log(value);}// a,b,c

variable: 在每次迭代中,将不同属性的值分配给变量。

iterable:可枚举其枚举属性的对象。

for...of与for...in的区别:

for...in 语句以原始插入顺序迭代对象的可枚举属性。针对object

for...of 语句遍历可迭代对象定义要迭代的数据。对于Array,Map,Set,String,TypedArray,arguments 对象等等

在浏览器中调试一遍效果更佳

对象(Object)

对象循环的话目前我知道 for in 是最好的选择啦!用法和 for of 一样

对象是类数组对象,当然我们也可以把对象转化为数组:

1.:返回一个数组,包含指定对象的所有自有可遍历属性的名称

2.类数组转化为数组:Array.prototype.slice.call(arguments)

3. :对伪数组或可迭代对象(包括arguments Array,Map,Set,String...)转换成数组对象。

...未完待续

转载地址:http://unwoa.baihongyu.com/

你可能感兴趣的文章
PHPCMS V9数据库表结构分析
查看>>
『原创』+『参考』基于PPC的图像对比程序——使用直方图度量
查看>>
理解 IEnumerable 与 IEnumerator
查看>>
NHibernate 2.0 Beta 1 Released和一些工具
查看>>
【每天一个Linux命令】12. Linux中which命令的用法
查看>>
软件接口数据一致性机制
查看>>
微服务架构介绍和RPC框架对比
查看>>
Debian下使用OpenLDAP 管理端
查看>>
build with runtime package
查看>>
步步为营 .NET 代码重构学习笔记 九
查看>>
泛型排序器TComparer
查看>>
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路...
查看>>
你必须知道的指针基础-3.指针的移动及指针的危险
查看>>
创建符合标准的、有语意的HTML页面——ASP.NET 2.0 CSS Friendly Control Adapters 1.0发布...
查看>>
BZOJ 3241: [Noi2013]书法家
查看>>
bzoj 3118: Orz the MST(单纯形)
查看>>
csharp:Dapper Sample
查看>>
VS2005右键点击转到定义后出现“未定义符号”的提示及其解决
查看>>
转-Google的Objective-C编码规范
查看>>
Adobe驳斥Flash过度耗电论 称HTML5更耗电
查看>>