Python vs javascript lists
Python vs javascript lists
我从python背景开始学习javascript,想了解如何解释我看到的一些代码。
在Python中,我可以获得以下代码/输出:
Python代码:
myarray = ["a","b", "c"]
for item in myarray:
print (item)
Python输出
a
b
c
在Javascript中,这给了我一些不同的东西:
Javascript代码:
var myarray = ["a","b","c"]
for(var item in myarray){
console.log(item)
}
Javascript输出:
"0"
"1"
"2"
正是这种解释让我感到困惑。在python中,for循环自然地读取"对于myarray中的每个项目,打印项目"。然而,在Javascript版本中,它打印出"0"、"1"、"2"。为了使其正确,我需要将代码更改为:
var myarray = ["a","b","c"]
for(var item in myarray){
console.log(myarray[item])
}
我想问这背后的逻辑是什么(至少在我看来,这似乎不那么清楚)?还有,为什么我的第一种方法会把项目打印成字符串?
谢谢你的帮助!
您的JavaScript代码显示了一种迭代数组的方法,这种方法很少使用。您应该使用for
语句。
var myarray = ["a","b","c"]
for(var i = 0; i < myarray.length; i++){
console.log(i, myarray[i])
}
原因是for-in
是一个通用的属性枚举器。它包括对象的所有属性,包括所有属性和继承属性,并且不限于数字索引。因此,它将包括您可能已经包括的所有拥有或固有的可枚举属性。
此外,for-in
不保证枚举的顺序。因此,你不能确定你会得到一个想要的上升序列。
JavaScript中Object的所有键都是字符串,数组只是Object的另一种类型。这就是for-in
为其键提供字符串的原因,也是for-in
在Arrays上工作的原因。
通常for-in
将用于对象,如
var myobject = {
foo: "bar",
baz: "buz"
}
for (var p in myobject) {
console.log(p, myobject[p]);
}
因此,是的,它"有效",因为for-in
语句不会拒绝Array对象。但是,如果目标是以可预测的顺序迭代数字索引,那么for-in
就不是合适的工具。
如果您只是想获得更好的语法,ECMAScript 5添加了几个Array迭代方法,这些方法接受为每个现有成员调用的回调函数。
.forEach()
方法就是一个例子。
myarray.forEach(function(item, i) {
console.log(item, i);
});
A代表。。。in循环不会对不可枚举的属性进行迭代。从内置构造函数(如Array和Object)创建的对象从Object.prototype和String.prototype继承了不可枚举的属性,如String的indexOf方法或Object的toString方法。循环将迭代对象本身的所有可枚举属性,以及对象从其构造函数的原型继承的属性(原型链中更接近对象的属性覆盖原型的属性)。
A代表。。。in循环以任意顺序迭代对象的属性(请参阅delete操作符了解更多关于为什么不能依赖于迭代的外观顺序的信息,至少在跨浏览器设置中是这样)。如果一个属性在一次迭代中被修改,然后在以后的时间访问,那么它在循环中的值就是它在以后时间的值。在访问之前被删除的属性以后将不会被访问。添加到正在进行迭代的对象的属性可以被访问,也可以从迭代中省略。通常,在迭代过程中,最好不要添加、修改或删除对象中的属性,而不是当前访问的属性。无法保证添加的属性是否会被访问,修改的属性(当前属性除外)是否会在修改之前或之后被访问,或者删除的属性是否在删除之前被访问。
试试这个-:
for(item in myarray){
console.log(myarray[item])
}
CCD_ 10将得到CCD_ 11的索引。
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- Python vs javascript lists
- html lists - JavaScript UL Vertical Text