数组

标签 javascript

我通常使用 python 编写脚本/程序,但最近开始使用 JavaScript 进行编程,并且在使用数组时遇到了一些问题。

在 python 中,当我创建一个数组并使用 for x in y 时,我得到了这个:

myarray = [5,4,3,2,1]
for x in myarray:
    print x

我得到了预期的输出:

5
4
3
..n

但我的问题是,当使用 Javascript 时,我得到了一个完全不同的(对我来说)意外的结果:

var world = [5,4,3,2,1]
for (var num in world) {
    alert(num);
}

我得到了结果:

0
1
2
..n

我如何让 JavaScript 像 python 一样输出 num 作为数组中的值,为什么会这样?

最佳答案

JavaScript 和 Python 不同,您在它们之间以不同的方式做事。

在 JavaScript 中,你真的应该(几乎)总是迭代一个带有数字索引的数组:

for (var i = 0; i < array.length; ++i)
  alert(array[i]);

JavaScript 中的“for ... in”结构为您提供对象的,而不是。在数组上使用它很棘手,因为它将数组作为一个对象来操作,对待它与任何其他类型的对象没有区别。因此,如果数组对象有额外的属性——这是完全“合法的”并且并不少见——除了“正常”数组内容的索引之外,你的循环还将选择这些属性。

关于数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330219/

相关文章:

javascript - window.onbeforeunload 不会立即触发

javascript - Jssor 延迟字幕输出

javascript - 在点击 td 后尝试获取 td 行文本

javascript - Angular ui路由器不区分大小写的查询参数

javascript - array.fill.call() 在 js 中如何工作?

javascript - 加法运算符在 JavaScript 中不起作用

javascript - 无法将 For 循环与 Promise 一起使用

javascript - 有没有发生 body 变化的事件?

javascript - 如何在ajax中获取数组的值

javascript - 如何以编程方式更改 html 元素的点击事件