首页 > 解决方案 > 在 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"

有人可以解释一下这个对象的性质以及为什么这两种情况(尤其是第二种情况)会返回这样的结果吗?

标签: javascriptobject

解决方案


obj数组或对象。它在索引处有两个对象,01就是为什么当你这样做时console.log(obj[0]);它只给你{"foo":101,"bar":1,"foobar":0}. 这是 index 处的对象0

对于第二个问题,for (var somevar in obj)循环遍历每个键,obj因为它是数组数据类型,所以数组的键始终是它的index值。这就是为什么你得到01控制台。要完成这项工作,您需要var somevar of objforthat 中进行操作,然后会考虑数组而value不是数组。keyobj

var obj = [{"foo":101,"bar":1,"foobar":0},{"foo":102,"bar":1,"foobar":0}];

for (var somevar of obj){ 
   console.log(JSON.stringify(somevar));
}


推荐阅读