如何同时遍历js中的数组和对象
同样的数据从服务器取得并解码后(json数据),在js端呈现两种不同的结果,一为数组,一为对象,暂且不讨论问题的原因(待解决),这里讨论解决办法。
开始以为只会遍历数组,没考虑到会遍历对象,所以用了 for(对象无length属性所以失败)。
forEach 只能用于数组,不能用于对象;
for 需要长度作为循环终止条件,对象没有length属性,也不考虑;
for in 可以同时遍历数组和对象,符合条件;
1 | var searches = {state:1,page:2}; |
Object.keys() 先把对象或属性取出来得到数组a,然后遍历a,相当于在遍历数组和对象,也符合条件;
var p = data[i] || data.i;//不论data是数组还是对象,都可以取到值