javascript - 在 javascript 中这是什么类型的对象?
问题描述
我有一个对象'obj'。假设我们暂时不知道它来自哪里。
如果我做
console.log(JSON.stringify(obj));
我得到
[{"foo":101,"bar":1,"foobar":0},{"foo":102,"bar":1,"foobar":0}]
这是一个什么样的物体?
我要求我看到两种我无法理解的行为:
1)它似乎是一个对象数组(?)所以我希望
console.log(obj[0])
返回:
{"foo":101,"bar":1,"foobar":0},{"foo":102,"bar":1,"foobar":0}
相反,它返回:
{"foo":101,"bar":1,"foobar":0}
2)我希望
for (var somevar in obj){
console.log(JSON.stringify(somevar));
}
返回
first step: {"foo":101,"bar":1,"foobar":0}
second step: {"foo":102,"bar":1,"foobar":0}
相反,它返回
first step: "0"
second step: "1"
有人可以解释一下这个对象的性质以及为什么这两种情况(尤其是第二种情况)会返回这样的结果吗?
解决方案
是obj
数组或对象。它在索引处有两个对象,0
这1
就是为什么当你这样做时console.log(obj[0]);
它只给你{"foo":101,"bar":1,"foobar":0}
. 这是 index 处的对象0
。
对于第二个问题,for (var somevar in obj)
循环遍历每个键,obj
因为它是数组数据类型,所以数组的键始终是它的index
值。这就是为什么你得到0
和1
控制台。要完成这项工作,您需要var somevar of obj
在for
that 中进行操作,然后会考虑数组而value
不是数组。key
obj
var obj = [{"foo":101,"bar":1,"foobar":0},{"foo":102,"bar":1,"foobar":0}];
for (var somevar of obj){
console.log(JSON.stringify(somevar));
}
推荐阅读
- php - 如何将 PHP 输出实现到带有键号的数组
- javascript - 谷歌地球引擎 - 在 imagecollection 中填充图像间隙
- python - Python 3.7,无法导入 pyzbar
- electron - 如何使用电子打印 jsPDF 文档?
- python - 从二进制文件中解码python中的字符串列表
- php - 数组到字符串的转换 - eloquent 的验证规则
- json - 当我使用 rest json 时,ExtJS6 网格显示为空
- html - 将两个图标水平对齐到一行
- python - 如何修复:collect2:错误:ld 返回 1 退出状态错误:命令“x86_64-linux-gnu-gcc”失败,退出状态为 1
- android - RecyclerView中ArrayList的重叠