js 数组遍历符合条件跳出循环体_在JavaScript中循环遍历数组
你有几个选择:
1.顺序for循环:
var myStringArray = ["Hello","World"];
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
console.log(myStringArray[i]);
//Do something
}
优点适用于各种环境
您可以使用break和continue流控制语句
缺点太冗长了
势在必行
2. Array.prototype.forEach
ES5规范。介绍了很多非常有用的数组方法,其中之一,Array.prototype.forEach它给了我们一个非常简短的迭代数组的方法:array.forEach(function (item, index) {
console.log(item, index);});
在编写ES5规范的时候差不多9年了。发布时间(2009年12月),它已经被桌面,服务器和移动环境中的几乎所有现代引擎实现,因此使用它们是安全的。
使用ES6箭头函数语法,它更简洁:array.forEach(item => console.log(item));
箭头功能也正在广泛实施,除非您计划支持非常旧的平台(例如IE11),您也可以安全使用。
优点非常短暂和娴熟。
陈述
缺点不能用break/continue
通常,您可以break通过在迭代数组元素之前过滤数组元素来替换超出命令循环的需要,例如:array.filter(item => item.condition
.forEach(item => console.log(item))
请记住,如果您正在迭代一个数组以从中构建另一个数组,那么您应该使用map,我已经多次看到过这种反模式。
3. ES6 for-of声明
ES6标准引入了可迭代对象的概念,并定义了一个用于遍历数据的新构造,即for...of语句。
此语句适用于任何类型的可迭代对象以及生成器。
根据定义,数组对象是ES6中内置的可迭代对象,因此您可以对它们使用此语句:let colors = ['red', 'green', 'blue'];for (const color of colors){
console.log(color);}
优点可以迭代各种各样的对象。
可以使用正常的流量控制语句(break/ continue)。
用于迭代串行异步值。
缺点如果您要定位旧浏览器,则转换后的输出可能会让您感到惊讶。
不使用 for...in
@zipcodeman建议使用该for...in语句,但是对于迭代数组for-in应该避免,该语句用于枚举对象属性。
它不应该用于类似数组的对象,因为:不保证迭代的顺序,可能无法按数字顺序访问数组索引。
还枚举了继承的属性。
第二点是它可以给你很多问题,例如,如果你扩展Array.prototype对象以包含一个方法,那么该属性也将被枚举。
例如:
Array.prototype.foo = "foo!";
var array = ['a', 'b', 'c'];
for (var i in array) {
console.log(array[i]);
}
上面的代码将控制“a”,“b”,“c”和“foo!”。
如果你使用一些严重依赖原生原型增强的库(例如MooTools),这尤其成问题。
for-in我前面说过的语句是枚举对象属性,例如:
var obj = {
"a": 1,
"b": 2,
"c": 3
};
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
// or if (Object.prototype.hasOwnProperty.call(obj,prop)) for safety...
console.log("prop: " + prop + " value: " + obj[prop])
}
}
在上面的示例中,该hasOwnProperty方法允许您仅枚举自己的属性,即它,只有对象物理上具有的属性,没有继承的属性。
我建议你阅读以下文章:
js 数组遍历符合条件跳出循环体_在JavaScript中循环遍历数组相关推荐
- js 数组遍历符合条件跳出循环体_C++模拟面试:从数组“紧凑”操作说开来
面试官 自来也 去掉一个字符串中的空格. 假设用C语言来解答,字符串是char数组.O(n)时间复杂度实现不难,比如额外申请一个新数组,然后遍历一遍字符串,将符合条件的字符存储到新数组中,实现起来很简 ...
- js 数组遍历符合条件跳出循环体_Js数组遍历方法对比总结
引言: ES6为javascript为数组遍历提供了新的一种方式: for....of.....那之前的遍历方法各存在哪些缺点?for...of...有什么好处?接下来,我们先回顾一下有多少种方式. ...
- js 数组遍历符合条件跳出循环体_Javascript数组循环遍历之forEach详解
1.js 数组循环遍历. 数组循环变量,最先想到的就是 for(var i=0;i除此之外,也可以使用较简便的forEach 方式 2.forEach函数. Firefox 和Chrome 的Arra ...
- js 数组遍历符合条件跳出循环体_JavaScript跳出forEach循环
JavaScript提供了forEach用于遍历数组.但使用forEach做迭代时有一个问题,它不允许在遍历完所有元素之前终止循环跳出,即不能使用break语句.即使是在函数里使用return fal ...
- 中的枚举属性函数_对于 JavaScript 中循环之间的技术差异分析
在 JavaScript 中使用循环时,需要理解两个关键点:可枚举的属性和可迭代的对象. 可枚举的属性 可枚举对象的一个定义特征是,当通过赋值操作符向对象分配属性时,我们将内部 enumerable ...
- js数组循环符合条件跳出循环体(for、forEach、some、every)
1,for循环 for(var i=0;i<10;i++){ console.log(i)if(i==3){break;} } 输出结果为0 1 2 3 此处用break可跳出for循环,如果f ...
- java list移除符合条件的元素_从List中移除指定 List 中包含的其所有元素(可选操作)。...
从List中移除指定 List 中包含的其所有元素,这个当然用List里面的removeAll方法了,但是有朋友说能不能不用removeAll呀 于是我就写了如下代码: List l = ...; L ...
- 如何在JavaScript中循环遍历JSON响应
从远程服务器获取数据时,服务器的响应通常为JSON格式.在本文中,我将演示如何使用JavaScript解析服务器的响应,以便访问所需的数据.该过程通常包括两个步骤:将数据解码为本机结构(例如数组或对象 ...
- 如何在JavaScript中循环遍历JSON响应?
从远程服务器获取数据时,服务器的响应通常为JSON格式.在本文中,我将演示如何使用JavaScript解析服务器的响应,以便访问所需的数据.该过程通常包括两个步骤:将数据解码为本机结构(例如数组或对象 ...
最新文章
- [Go]结构体及其方法
- 低复杂度 - 服务网格的下一站
- mysql触发器执行失败_mysql-Mysql数据库触发器执行不成功
- boost::gregorian模块实现打印假期的测试程序
- 1037. 在霍格沃茨找零钱(20)
- css-背景图片和渐变
- 终于找到中文版JDK1.8-API了~
- [leetcode]1.Two Sum
- 1059 C语言竞赛 (ID映射编号映射字符串)
- 极客先锋 如何生成git的公钥和私钥
- 面试题46. 把数字翻译成字符串
- POJ1521 LA2088 HDU1053 ZOJ1117 Entropy【哈夫曼编码】
- swf文件数据格式分析
- 计算机怎么格式化硬盘,如何格式化硬盘
- 高并发高可用高性能的解决方案
- elasticsearch使用中文分词器和拼音分词器,自定义分词器
- 盒子模型与PS基本操作
- 基于微信视频直播如何做收费直播(微信公众号直播)?
- 12.Numpy数值计算
- 回望我的2019:35岁的程序员,没想到找工作这么难!