【问题标题】:Can Javascript objects be accessed like arrays?可以像数组一样访问 Javascript 对象吗?
【发布时间】:2013-09-20 11:41:33
【问题描述】:

假设一个对象被初始化如下:

var myObj = {
   "key1":"val1",
   "key2":"val2",
   "key3":"val3",
   ...
};

我可以这样检索键值吗?

var retrKey1 = myObj[0];
var retrKey2 = myObj[1];
var retrKey3 = myObj[2];
...

我要解决的问题是我需要从这个对象中选择随机键值。生成随机数不是问题,但是:

  1. 如何检索对象/映射中的键数?
  2. 我可以像在数组中那样使用整数索引来检索键值吗?

如果没有,我有什么选择?

【问题讨论】:

  • 你尝试的时候发生了什么?

标签: javascript arrays object indexing


【解决方案1】:

Object.keys 方法返回一个对象属性数组。然后你可以用数字索引数组。

var myObj = {
 "key1":"val1",
 "key2":"val2",
 "key3":"val3",
 ...
};
var keys = Object.keys(myObj); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

【讨论】:

  • 不保证订单。在不同的引擎/浏览器/执行中,您可能会得到不同的结果。
  • 由于 OP 正在寻找随机键值,因此实现之间的排序和一致性没有实际意义。给定0..maxKey 中的随机x,它们的随机属性将为myObj[keys[x]]。我认为这正是他们所要求的。
【解决方案2】:

不,因为属性键之间没有排序。如果您想要有序键,则需要使用数组。

你可以定义这样的结构:

var myObj = [
    {key:"key1", val:"val1"},
    ...
];

【讨论】:

  • 他也可以使用myobj['property']
  • @steo 我从 OP 想要使用“整数索引”而不是属性名称的问题中了解到。
  • 是的,我没有怪你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 2013-09-14
  • 2012-05-10
  • 2014-01-09
  • 1970-01-01
  • 2018-05-27
相关资源
最近更新 更多