javascript – 嵌套for循环和多维数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 嵌套for循环和多维数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2291字,纯文字阅读大概需要4分钟。
内容图文
我试图了解嵌套for循环如何在JavaScipt中使用多维数组,我有点卡在一点上.
使用股票示例
var arr = [[1,2], [3,4], [5,6]];
for (var i=0; i < arr.length; i++) {
for (var j=0; j < arr[i].length; j++) {
console.log(arr[i][j]);
}
}
这输出1 2 3 4 5 6这是我的预期.
但是,如果我在外部数组的末尾添加数字:
var arr = [[1,2], [3,4], [5,6], 7, 8];
for (var i=0; i < arr.length; i++) {
for (var j=0; j < arr[i].length; j++) {
console.log(arr[i][j]);
}
}
我仍然得到1 2 3 4 5 6的相同输出? ?
我很困惑为什么7&循环没有拾取8.有趣的是,如果我使用字符串代替:
var arr = [["a","b"], ["c","d"], "y", "z"];
for (var i=0; i < arr.length; i++) {
for (var j=0; j < arr[i].length; j++) {
console.log(arr[i][j]);
}
}
输出是b c d y z,这是我的预期.为什么字符串的行为不同?
解决方法:
以下是现代Javascript中的内容.
关于循环,所有值可以分为“可迭代”和“不可迭代”. Iterable是你可以很好的值…迭代 – 使用for..of循环.
for (let item of someIterableThing)
// use item
(你不要使用裸for循环 – for(var i … i< length) - 用于迭代,因为不是每个iterable都有长度和索引.) 相反,如果您使用不可迭代的东西,那么您将收到错误. 数组和字符串是可迭代值的示例,数字是不可迭代的.所以,当你有
[ [1,2], [3,4], "foobar" ]
此数组中的所有项都是可迭代的,您的嵌套循环将起作用.但是,在
[ [1,2], [3,4], 999]
最后一项是不可迭代的,嵌套循环将失败.
没有内置的方法来判断一个未知值是否可迭代,你必须为此编写一个函数:
let isIterable = x => x && x[Symbol.iterator]
然后,您可以以安全的方式使用嵌套循环:
for (let item of array)
if (isIterable(item))
for (let subItem of item)
console.log(subItem)
else
console.log(item)
作为旁注,网上有很多关于Javascript的过时信息.这种语言在不断发展,5年前的事情很好,现在被认为是不好的做法.不幸的是,大多数教程,书籍和教师都没有跟上,仍然推广旧的做法,比如使用裸for循环.
(因为人们问为什么完全裸的for循环是坏的,请考虑这个例子:
您有一个包含字符串的数组文本和处理此数组的多个函数.程序员A以老式的方式编写这些函数:
for (var i = 0; i < text.length; i++)
do_something_with(text[i]) // ;(
程序员B以现代方式编写它们:
for (let str of text)
do_something_with(str) // :)
现在,文本变得越来越大,不再适合内存.因此,系统架构师决定用一个只能一次生成一个字符串的可流式文件对象替换它.程序员A现在必须重写他的所有100个函数以适应新的界面:
for (var file = TextFile; !file.eof(); file.getNext())
do_something_with(file.currentLine)
这涉及到许多疼痛,抽搐和头痛.
程序员B只是喜欢她的假期.)
内容总结
以上是互联网集市为您收集整理的javascript – 嵌套for循环和多维数组全部内容,希望文章能够帮你解决javascript – 嵌套for循环和多维数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。