在Javascript中循环对象
可能重复:
循环浏览Json对象
{"data":[{"name":"Jen","id":"1"},{"name":"Steve","id":"8"}]}
我正在与之交互的服务器使用上述方式进行响应。
我试图循环访问For..in语句。
这就是我想要做的:
for (var item in response.data)
{
console.log(item.name);
}
这不起作用。 什么地方出了错?
谢谢
在阅读评论后,我已经拿到了以下内容:
for(var response.data中的项目){console.log(response.data [item] .name); }})
我能够得到一个名单列表...
有人可以解析为什么它的工作原理?
检查:为什么在数组迭代中使用“for ... in”是一个坏主意?
用于...通过对象属性的名称进行迭代。 数组项也被认为是“属性”,所以for..in遍历索引(在你的情况下是0,1)。 按照预期,当您使用response.data [0]时,您将获得数组的第一个元素。
data
实际上是一个数组(用[]
表示),而不是一个对象,所以你需要一个常规的for
循环而不是for in
。
for (var i = 0; i<response.data.length; i++) {
// use i as an array index
console.log(response.data[i].name);
}
在JavaScript中, for in
构造用于遍历对象属性,但为了迭代数组,通常使用递增for循环。
for..in
以特定顺序遍历对象的可枚举属性(您可能在不同的浏览器中获得不同的顺序)。 数组只是一个具有特殊长度方法的简单对象,以及从Array.prototype继承的方便方法(其中一些依赖于特殊的length属性)。 对于可以用于属性名称的内容没有限制,它们不限于非负整数(注意,在正确名称不是有效标识符的情况下,必须使用方括号表示来访问其值)。
数组的索引只是字符串属性名称(即它们只是普通的对象属性名称),它们是非负整数,因此for..in
循环将迭代数字索引(再次,不一定按升序或降序) 以及所有其他枚举属性,包括 [[Prototype]]
链 上的属性 。 因此,除非要包含继承的可枚举属性,否则总是建议使用for..in
包含hasOwnProperty测试。
由于上述原因,使用从0
到array.length - 1
的计数器遍历数组属性通常要好得多(因为长度总是比最后一个索引大1)。
要测试“无特定顺序”声明,请在IE和其他浏览器中尝试以下操作并记下不同的顺序:
var a = [];
a[2] = 2;
a[0] = 0;
a[3] = 3;
var b = [];
for (var i in a) b.push(a[i]);
alert(b);
链接地址: http://www.djcxy.com/p/28827.html
上一篇: Loop Through Object in Javascript
下一篇: How do I iterate over a JSON array using jQuery/AJAX call from PHP?