对象中的循环与数组中的循环
for loops in objects vs in arrays
可能的重复项:
JavaScript for ...in vs for
之间的区别..in 和 for 循环,以及计数器声明
是否有任何特殊原因,数组中的循环应该像for (var i = 0; i < foo.length; i++) {
一样编码,而对象中的循环只是for (var i in foo) {
是因为对象的设置方式与数组的设置方式吗?(我知道数组是一种对象)或者只是另一种吹毛求疵的编程约定。
迭代
列表时应使用for(i=0; i<n; i++)
循环,因为它们可按整数索引。
arr = [1,2,3,4]; // arr[0] == 1; arr[1] == 2;
for(var i=0; i<arr.length; i++) { alert(arr[i]; } // 1, 2, 3, 4
迭代对象时,应使用 for...in
循环,因为它可按键编制索引。如果您将对象视为键:值映射。请记住检查对象是否具有与每个键匹配的自己的属性,因为 in
语句将检查对象的 proptotype 链并返回从上面继承的属性名称。
obj = {
foo: 1,
bar: 2
}
for(key in obj) {
if(obj.hasOwnProperty(key)) {
alert(key); // foo, bar
alert(obj[key]); // 1, 2
}
}
嗯,主要原因是for...in
只迭代定义的成员。
所以
var arr = [];
arr[10] = "hi";
for(var x in arr)
{
alert(x);
}
将仅显示定义的一个值。有时这是一件好事 - 通常不是。
此外,for...in
循环属性,而不是数组索引(在javascript中,数组只是一个常规对象,其属性的名称是您分配给数组的值)
所以当你使用..在你可以得到奇怪的结果,比如:
1
阿拉伯数字
3
长度
到字符串
等。
对于数组来说,使用典型的for
语法是更好的选择。对于对象,for...in
更有意义,因为未定义的问题不会经常出现。不过,无论哪种方式,我都喜欢使用for(var x; x < y; x++)
语法。在 js 中感觉更好。
相关文章:
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何从某个位置顺时针和逆时针循环数组
- 赢得't循环数组javascript
- 通过循环数组内容
- 使用RegExp循环数组而不是for循环(Javascript)
- 如何在背景图像的循环数组中预加载图像
- 如何在循环数组内部推送变量值
- Javascript循环数组无限不起作用
- 如何循环数组
- 如何使用Handlebars循环数组对象和模板
- PHP同时循环数组数据显示到javascript中
- 如何使用上一个/下一个功能循环数组中的图像
- 如何循环数组并保持它们之间的索引增长
- Javascript循环数组以查找可被3整除的数字
- 以变量作为属性的循环数组
- 嵌套的“for”循环 - 数组未定义
- 在具有主干和车把的模型中循环数组
- 数组在 for 循环与第二个 for 循环数组 JavaScript 合并
- 对于javascript和jquery的循环数组问题
- 在循环数组 javascript 后替换对象属性值中的字符串