不能在json对象中选择第一个值

Can't select first value in json object

本文关键字:选择 第一个 对象 json 不能      更新时间:2023-09-26

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

您需要使用字符串访问键,而不是使用索引:

array[0]['Room 1']

编辑:有一种基于定义顺序访问键的方法。然而,虽然Object.keys的几乎所有实现目前都以正确的顺序返回,但规范并没有要求这样做:

var keys = Object.keys( array[0] );
var fifth = keys[4];
var value = array[0][fifth];

这是因为它是数组内的对象。你可以通过使用array[0]来访问数组的元素,但是对于一个对象,它必须是object.keyobject["key"]

为了使这个数据结构更动态,我建议这样拆分它:

roomNumbers = [11017, 2651, 1, 2, 1]...(and so on)

这样,您就可以在不事先知道房间的情况下访问一个号码。

您有一个包含1个对象的数组,该数组有键而没有索引。所以引用第一个键:

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

由于元素是一个对象,它试图检索属性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]]
);

UPDATE:如果你想按一定的顺序得到它,那么使用嵌套数组代替。

var array = [[
  11017,
  2651,
  1,
   2,
   1,
   1,
   3,
   5,
   3661,
   2
]]
console.log(
  array[0][0]
);