关于JavaScript for.in表示法的说明
Clarification about the JavaScript for..in notation
这里的x是数字吗?它的使用方式与下面的person[x]
部分类似。这是怎么回事,我太迷了:
var person={fname:"John",lname:"Doe",age:25};
var x;
for (x in person)
{
document.write(person[x] + " ");
}
我很感激任何提示或建议。
否,x
不是数字。只有当您在Array
上迭代时才会出现这种情况,在这种情况下,x
将是元素的数字索引。在这种情况下,它将是一个字符串,因为JavaScript对象实际上是关联数组(由字符串索引)。它将是对象中每个字段的名称:
for (var x in person) {
document.write(x + ' = ' + person[x]);
}
应输出:
fname = John
lname = Doe
age = 25
忘记for (key in obj)
。这里引用一位著名的教育家:
每个人都知道应该迭代对象的键,而不是对象本身。
因此,迭代对象的正确方法是:
var keys = Object.keys(obj); // array of keys
for (var i = 0, len = keys.length; i < len; i += 1) {
var item = obj[keys[i]];
/* ... */
}
对于。。。in迭代对象的可枚举属性。我建议阅读上的MDN页面。。。有关详细信息,请参阅。
Adel您必须了解基本的数据结构。
`
1> 在上面的代码片段中,"person"不是数组,而是字典或哈希表(这就是为什么x不是数字)。它们是键:值对的数组。看见http://en.wikipedia.org/wiki/Associative_array
2> "Dictionaries/Associative arrays"在键上迭代。因此代码for(x in person)
将为您提供键数组,而不是我们在数组迭代中期望的数字开关。请尝试for(x in person){console.log(x);}
相关文章:
- React中的数据集表示
- 关于 Javascript 中 parseInt() 的说明
- 任何将(SSH)终端嵌入到一些HTML5表示系统中的想法(例如,show.js)
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 如何将Date字段设置为等于另一个Date+Int值,该值表示月份值
- regex表示逗号,后跟空格或仅逗号
- Codeigniter会话概念简要说明
- 我将如何将其更改为循环和数组表示法
- 如何使用Undercore和Backbone在HTML中表示模型属性
- 将JSON对象的表示形式更改为显式键/值格式
- 如何在JS中获得CryptoJS.HmacSHA256的摘要表示
- 在javascript中使用方括号表示法的嵌套对象
- 如何在JavaScript中将数字表示为十六进制
- 如何从二进制int中获取百分比,每个位表示x%
- Regex表示10位数字,其中没有't允许所有零、所有单个no和序列号
- 如何避免“;使用数组文字表示法“;以下javascript代码中的jslint错误
- Regex表示8位电话号码(新加坡号码长度)
- 有没有办法在里面看到一个数字'的64位浮点IEEE754表示
- 关于reduce在javascript中创建过滤器的说明
- 关于JavaScript for.in表示法的说明