我通常使用python编写脚本/程序,但最近开始使用JavaScript进行编程,并且在使用数组时遇到了一些问题.
在python中,当我创建一个数组并在y中使用x时,我得到了这个:
myarray = [5,4,3,2,1]
for x in myarray:
print x
Run Code Online (Sandbox Code Playgroud)
我得到了预期的输出:
5
4
3
..n
Run Code Online (Sandbox Code Playgroud)
但我的问题是,当使用Javascript时,我得到一个不同的,完全出乎意料的(对我而言)结果:
var world = [5,4,3,2,1]
for (var num in world) {
alert(num);
}
Run Code Online (Sandbox Code Playgroud)
我得到了结果:
0
1
2
..n
Run Code Online (Sandbox Code Playgroud)
如何让JavaScript输出num作为数组中的值,如python,为什么会发生这种情况?
Poi*_*nty 10
JavaScript和Python是不同的,你在它们之间以不同的方式做事.
在JavaScript中,你真的应该(几乎)总是迭代一个带有数字索引的数组:
for (var i = 0; i < array.length; ++i)
alert(array[i]);
Run Code Online (Sandbox Code Playgroud)
JavaScript中的"for ... in"构造为您提供了对象的键,而不是值.在数组上使用它很棘手,因为它作为一个对象在数组上运行,对待它与任何其他类型的对象没有什么不同.因此,如果数组对象具有其他属性 - 这是完全"合法"并且并不罕见 - 除了"普通"数组内容的索引之外,您的循环将选择那些属性.
JavaScript中的for var in ...循环将键放在变量而不是实际值中.所以当使用for var时,你应该这样做:
var world = [5, 4, 3, 2, 1];
for ( var key in world ) {
var value = world[key];
alert(key + " = " + value);
}
Run Code Online (Sandbox Code Playgroud)
请注意,当您使用对象而不是数组时,最好使用这种循环方式.对于数组使用常见的:
for ( var i = 0, j = arr.length; i < j; i++ ) { ... }
Run Code Online (Sandbox Code Playgroud)
或者,如果您的目标是现代浏览器,则可以使用数组的forEach方法:
var arr = [1, 2, 3];
arr.forEach(function(num) {
alert(num);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |