无法在json对象中选择第一个值

时间:2016-06-29 17:45:43

标签: javascript arrays json

我似乎无法选择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 } ]

4 个答案:

答案 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.keyobject["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]
);