for/in 循环对象到数组
For/In Loop Object to Array
有人可以外行向我解释循环中发生的事情,因为它迭代生成语句(对象属性在数组中)。
var o = {x:1, y:2, z:3};
var a = [], i = 0;
for (a[i++] in o)
{
console.log(o);
}
以下是 for/in 循环的计算方式:
for each property in object o
assign the property name to the left hand side, that is a[i++]
最初i = 0
,所以:
-
a[0]
将得到x
. 注意它获取属性名称,而不是其值 -
a[1]
会得到y
. -
a[2]
会得到z
.
注意:i++
等于 i = i + 1
。
前面的代码等效于以下内容:
var o = {x:1, y:2, z:3};
var a = []
var i = 0;
for (propertyName in o)
{
a[i] = propertyName;
i = i + 1;
console.log(o);
}
它将一个具有三个键(x,y,z)的对象分配给o
。它给a
分配一个空数组,把数字0分配给i
。
for ( in )
循环将遍历对象的属性,但首先评估条件。
首先评估i++
。++
是一个后增量运算符,因人们弄错该死的东西而臭名昭著。道格拉斯·克罗克福德(寻找他)建议不要使用它。它返回存储在 i
中的值(为 0),然后递增它。
所以现在我存储 1,我们正在评估 a[0],它正在访问数组中的一个元素,除了......该数组为空(我们正在访问一个未定义的值)。
它现在查看in o
,它遍历o
中的键,其中有 3 个。因此,它将循环迭代三次。每次它都会将对象记录到控制台。
无论这段代码是什么,我都建议替换它。它不应该是您希望在代码中看到的内容。这令人困惑,肯定没有任何意义。
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象