100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > js 数组遍历符合条件跳出循环体_在JavaScript中循环遍历数组

js 数组遍历符合条件跳出循环体_在JavaScript中循环遍历数组

时间:2021-01-31 22:40:36

相关推荐

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年了。发布时间(12月),它已经被桌面,服务器和移动环境中的几乎所有现代引擎实现,因此使用它们是安全的。

使用ES6箭头函数语法,它更简洁:array.forEach(item=>console.log(item));

箭头功能也正在广泛实施,除非您计划支持非常旧的平台(例如IE11),您也可以安全使用。

优点非常短暂和娴熟。

陈述

缺点不能用break/continue

通常,您可以break通过在迭代数组元素之前过滤数组元素来替换超出命令循环的需要,例如:array.filter(item=>item.condition

.forEach(item=>console.log(item))

请记住,如果您正在迭代一个数组以从中构建另一个数组,那么您应该使用map,我已经多次看到过这种反模式。

3. ES6for-of声明

ES6标准引入了可迭代对象的概念,并定义了一个用于遍历数据的新构造,即for...of语句。

此语句适用于任何类型的可迭代对象以及生成器。

根据定义,数组对象是ES6中内置的可迭代对象,因此您可以对它们使用此语句:letcolors=['red','green','blue'];for(constcolorofcolors){

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方法允许您仅枚举自己的属性,即它,只有对象物理上具有的属性,没有继承的属性。

我建议你阅读以下文章:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。