迭代数据以获取值
迭代数据以获取值
我有以下的循环\n
for (var i in data) { console.log(data[i]) }
\n我遍历的数据是\n \"data\": [\n {\n \"MainArea\": \"North West\"\n },\n {\n \"MainArea\": \"South West\"\n },\n
\n当我运行它时,在firebug中我得到以下输出\n
[Object { MainArea="North West"}, Object { MainArea="South West"}]
\n我想要的只是它的值。所以当我尝试\n
console.log(data[i].MainArea)
\n希望只得到\"North West\"和\"South West\"的值,而不是在我的控制台中得到\"undefined\"。
问题的原因是对象的属性名和值的获取方式不正确。对象的属性名和值应该使用冒号(:)分隔,而不是等号(=)。因此,导致在使用循环迭代数据获取值时出现问题。
解决方法是将代码中的等号(=)替换为冒号(:),以正确设置对象的属性名和值。具体来说,将MainArea="North West"
修改为MainArea: "North West"
。
修改后的代码如下:
{ MainArea: "North West" }
这样,对象就正确地定义了一个名为MainArea
的属性,并将其值设置为"North West"
。
在使用循环迭代数据获取值时,可以使用console.log(data[i].MainArea)
来打印出对象的MainArea
属性的值。
注意:尽管代码中的等号(=)语法在调试器中可能是可行的,但它不符合JavaScript的语法规范。因此,在编写代码时,应该始终使用正确的语法来定义对象的属性名和值。
问题出现的原因是数据对象中有一个名为"data"的属性,它是一个包含目标对象的数组。在迭代数据时,我们需要使用的属性键是"MainArea"。解决方法是使用for循环迭代"data"数组,并打印出每个对象中的"MainArea"属性。
代码示例:
var data = { "data": [{ "MainArea": "North West" }, { "MainArea": "South West" }] } for (var i in data.data) { console.log(data.data[i].MainArea) }
Demo: [Fiddle](http://jsfiddle.net/arunpjohny/hyDP2/)
问题的原因是在遍历数据时,无法获取到所需的值。解决方法是通过使用循环来遍历数组,然后通过属性名来获取变量的值。
代码示例:
var myObj = { "data": [ { "MainArea": "North West" }, { "MainArea": "South West" } ] }; var data = myObj['data']; var data_length = data.length; for (var i=0; i
需要注意的是,当遍历键值对时应使用`for ... in`循环,而当遍历数组时应使用`for`循环。如果`data`属性包含了已排序的数组,`for ... in`循环将无法按照顺序遍历数组项。因此,应只在数组上使用`for`循环,在非数组对象上使用`for ... in`循环。关于这方面的更多信息可以在这里阅读到。你还可以通过这个链接进行jsPerf性能比较。
最后,你可以通过以下链接查看示例代码:DEMO。