javascript中forEach和for循环的区别
我想知道:JavaScript中的javascript中forEach和for循环的区别,javascript,loops,for-loop,foreach,Javascript,Loops,For Loop,Foreach,我想知道:JavaScript中的forEach和for循环之间有什么显著的区别吗 考虑这个例子: var myArray = [1,2,3,4]; myArray.forEach(function(value) { console.log(value); }); for (var i = 0; i < myArray.length; i++) { console.log(myArray[i]); } var myArray=[1,2,3,4]; myArray.forEac
forEach
和for
循环之间有什么显著的区别吗
考虑这个例子:
var myArray = [1,2,3,4];
myArray.forEach(function(value) {
console.log(value);
});
for (var i = 0; i < myArray.length; i++) {
console.log(myArray[i]);
}
var myArray=[1,2,3,4];
myArray.forEach(函数(值){
console.log(值);
});
对于(var i=0;i
以下是我研究的一部分:
数组
的每个元素传递给函数
”的简写方法。下面是一个我认为非常有用的常见示例,与for
循环相比:
// shortcut for document.querySelectorAll
function $$(expr, con) {
return Array.prototype.slice.call((con || document).querySelectorAll(expr));
}
// hide an element
function hide(el) {
el.style.display = 'none';
}
// hide all divs via forEach
$$('div').forEach(hide);
// hide all divs via for
for (var divs = $$('div'), i = 0; i < divs.length; i++) {
hide(divs[i])
}
//document.querySelectorAll的快捷方式
函数$$(expr,con){
返回Array.prototype.slice.call((con | | document.queryselectoral(expr));
}
//隐藏元素
函数隐藏(el){
el.style.display='none';
}
//通过forEach隐藏所有div
$$('div').forEach(隐藏);
//通过隐藏所有div,以便
对于(var divs=$$('div'),i=0;i
如您所见,与for循环相比,forEach语句的可读性有所提高
另一方面,
for
语句更灵活:它不一定涉及数组。正常的for
循环的性能稍好一些,因为所涉及的每个元素都没有函数调用。尽管如此,当可以将forEach
语句写入时,建议避免for
循环。在forEach
循环中,您无法控制迭代数组的方式。经典的for
循环允许您根据需要选择迭代算法(i++
;i--
;i+=2*i
,等等)
然而,一个forEach
循环更容易使用-你不需要搞乱所有的i
计数,找到array[i]
对象——JS为你做这件事;
>> sparseArray = [1, 2, , 4];
>> sparseArray.forEach(console.log, console);
1 0 [1, 2, 3: 4]
2 1 [1, 2, 3: 4]
4 3 [1, 2, 3: 4]
>> for(var i = 0; i < sparseArray.length; ++i) { console.log(sparseArray[i]) };
1
2
undefined
4
>>sparseArray.forEach(console.log,console);
1 0 [1, 2, 3: 4]
2 1 [1, 2, 3: 4]
4 3 [1, 2, 3: 4]
>>对于(var i=0;iforEach
是最近添加的一个功能,它使javascript中的表达性列表理解风格成为可能。在这里您可以看到,forEach
跳过从未设置的元素,但是使用for
循环可以做的最好的事情是检查未定义的或null
,这两者都可以设置为值并由forEach
拾取。除非您期望缺少值,forEach
相当于for
循环,但请注意,您不能提前停止,根据下面的文章和研究,简单地说,您需要每一个
用于循环
这是迭代数组的原始方法之一
更快
您可以使用此关键字中断
在我看来,它主要用于计算整数(数字)
参数是(迭代器、计数器、增量)
ForEach循环
这是一种更新的方法,在数组上迭代的代码更少
易读
允许您将变量保持在范围内
使用i=etc…..
参数是(迭代器、项索引、整个数组)
在JavaScript中,forEach和for循环之间有一个区别
就性能而言,我更喜欢for循环而不是forEach循环。
这只是我在forEach循环中遇到的一些问题之一
let abc = [1,2,3]
abc.forEach((e) => {
delete e;
})
console.log(abc) //Array(3) [ 1, 2, 3 ]
for (let i = 0; i < abc.length; i++) {
delete abc[i];
}
console.log(abc) //Array(3) [ <3 empty slots> ]
让abc=[1,2,3]
abc.forEach((e)=>{
删除e;
})
log(abc)//数组(3)[1,2,3]
对于(设i=0;i
除了灵活性之外,我之所以使用for
循环的一个主要原因是,如果我需要尽早打破循环
在下面的示例代码中,如果只想在数组中返回某个值
,可以使用if
语句检查条件是否匹配,然后从循环中中断。forEach的forEach
方法会对每种食物进行迭代,这可能会导致性能问题
//Assume that foodArray has been declared
for (let i = 0; i < foodArray.length; i++) {
if (foodArray[i].name === 'Pizza') {
console.log('PIZZA EXISTS');
break;
}
}
//假设foodArray已声明
for(设i=0;i
forEach
forEach是一种基于阵列原型的方法
它很容易使用
它包含一个回调函数,数组中的每个元素都传递给回调函数
由于回调,您不能将wait与forEach一起使用,这将导致不同于预期的输出
由于回调函数,它比for循环慢
因为你