我似乎无法选择json对象中的第一个值
我已尝试array[0][0]
,但会返回undefined
。
[ { 'Room 1': 11017,
'Room 2': 2651,
'Room 3': 1,
'Room 4': 2,
'Room 5': 1,
'Room 6': 1,
'Room 7': 3,
'Room 8': 5,
'Room 9': 3661,
'Room 10': 2 } ]
答案 0 :(得分:3)
您需要使用字符串而非索引来访问密钥:
array[0]['Room 1']
编辑:
有一种方法可以根据定义的顺序访问密钥。但是,虽然Object.keys
的几乎所有实现当前都以正确的顺序返回,但规范并不是必需:
var keys = Object.keys( array[0] );
var fifth = keys[4];
var value = array[0][fifth];
答案 1 :(得分:1)
这是因为它是数组中的一个对象。您可以使用array[0]
访问数组的元素,但对于某个对象,它必须是object.key
或object["key"]
。
为了使这个数据结构更具动态性,我建议将其分解为:
roomNumbers = [11017, 2651, 1, 2, 1]...(and so on)
这样,您可以在不知道房间的情况下访问号码。
答案 2 :(得分:0)
你有一个数组,包含一个对象,它有键而不是索引。所以引用第一个键:
array[0]['Room 1']
如果您需要在不知道密钥名称的情况下提取,可以通过Object.keys(obj)
;
var availableKeys = Object.keys(array[0]);
var val = array[0][availableKeys[0]]; //replace availableKeys index with what you need
答案 3 :(得分:0)
由于元素是一个对象,它正在尝试检索0
的属性undefined
。因此,您需要使用属性名称来获取值(例如:array[0]['Room 1']
)。
您可以使用 Object.keys()
获取密钥数组,然后使用该数组获取值。但是无法保证订单,因为 Object.keys()
会以任意顺序返回密钥。
var array = [{
'Room 1': 11017,
'Room 2': 2651,
'Room 3': 1,
'Room 4': 2,
'Room 5': 1,
'Room 6': 1,
'Room 7': 3,
'Room 8': 5,
'Room 9': 3661,
'Room 10': 2
}]
console.log(
array[0][Object.keys(array[0])[0]]
);
var array = [[
11017,
2651,
1,
2,
1,
1,
3,
5,
3661,
2
]]
console.log(
array[0][0]
);