我无法理解所有这些循环之间的区别,任何人都可以共享链接或某些文章,这将有助于我在效率,速度,可用性等方面更详细地理解这些循环.
在下面的代码中,我怎样才能最好地理解这些差异?
const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let i = 0; i < digits.length; i++) {
console.log(digits[i]);
}
const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (const index in digits) {
console.log(digits[index]);
}
const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (const index of digits) {
console.log(digits[index]);
}
解决方法:
for循环:这是迭代数组的常用方法,我们使用i作为索引来访问数组字母中的元素. MDN Docs for reference
var letters = ["a","b","c"];
for (let i = 0; i < letters.length; i++)
{
console.log("Index : "+i, "Value : "+letters[i]);
}
for … in循环:此循环始终遍历索引.遍历数组时,变量i将保存每个元素的索引值.这可以在迭代期间所需元素的索引时使用. MDN Docs for reference
var letters = ["a","b","c"];
for (var i in letters)
{
console.log("Index : "+i, "Value : "+letters[i]);
}
for … of循环:此循环总是遍历数组的值.遍历数组时,变量i将保存元素的值.如果只需要数组中元素的值,则可以使用此方法. MDN Docs for reference
var letters = ["a","b","c"];
for (var i of letters)
{
console.log(i);
}
forEach循环:此循环在遍历arr时对每个元素执行回调函数.回调的参数是currentValue,currentValue的索引,执行循环的数组. MDN Docs for reference
var letters = ["a","b","c"];
letters.forEach(function(value, index, arr){
console.log("Value : "+value, "Index : "+index, "Complete array : "+arr)
});
在你的情况下的问题:代码按照流程正常工作.由于您的数组元素与其索引相同,因此您很难理解它.
in for … in循环:index = 0给出数字[0] = 0,
index = 1给出数字[1] = 1,依此类推.
in for循环:index = 0(其中变量索引保存digits [0]的值),在控制台语句中,编译器解释在数组d中访问索引0处的值.因此,它返回数字[0]的值,依此类推所有元素.