背景
写了点前端测试程序,用到javascript。
问题描述
定义了一个都是json对象的数据,做遍历的时候使用了for..in,希望拿到每个json对象,然后取到json对象中的值做一些处理。该开始代码是这样写的:
window.layoutConfig = { "api": "layout/config", "param":"" }; window.layoutData = { "api": "layout/data", "param":"" }; var interfaceArray = [ layoutConfig, layoutData ]; function TestAllInterface() { var result; for (var jsonObj in interfaceArray) { alert(jsonObj.api + jsonObj.param); ... Do something } }
发现alert中打出的值是NAN,怎么想多没明白,怎么会取不到json对象中的值呢?
问题解决
后面就看了下廖雪峰的官方网站中iterable的讲解,原来
for ... in
循环由于历史遗留问题,它遍历的实际上是对象的属性名称,一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性,而我只是想得到对象本身,for...in
不能满足需求,必须使用for...of
,这个是可以取到对象本身。