从javascript对象获取第一个键

Ant*_*al' 113 javascript

假设我们有以下javascript对象:

ahash = {"one": [1,2,3], "two": [4,5,6]}
Run Code Online (Sandbox Code Playgroud)

有没有函数,它返回对象中第一个键的值?(我不知道密钥名称,我只想获得第一把钥匙的价值).

Pic*_*els 279

在Javascript中,您可以执行以下操作:

Object.keys(ahash)[0];
Run Code Online (Sandbox Code Playgroud)

  • 适用于浏览器 (11认同)
  • 我想指出`for(key in dict)`可能会更快地执行**,O(1)而不是O(n).这根本不是愚蠢的. (10认同)
  • 这是一段生病的代码.我期待着在dict中用一把傻傻的东西弄乱一切: (3认同)
  • 比接受的答案更清洁,谢谢! (2认同)
  • 这不适用于不支持JS 1.8.5的旧浏览器 (2认同)
  • 为了将来我...请注意,如果您想要第一个键的值,则Object上还有一个“ value”方法,即Object.value (2认同)
  • @engineerDave,这是您的未来。我们已经更改了stackOverflow帐户的句柄,并且通过发明时间旅行而赚了一大笔钱,但这不重要。我只想说“谢谢”,这张小纸条帮助了我。 (2认同)

Ned*_*der 30

哈希中没有"第一"键(Javascript称它们为对象).它们基本上是无序的.你的意思是只选择任何一个键:

for (var k in ahash) {
    break
}

// k is a key in ahash.
Run Code Online (Sandbox Code Playgroud)

  • 应检查obj.hasOwnProperty(prop)是否也会添加 (6认同)
  • EMCA 脚本规范使字典*有序*。它们是“有序字典”。枚举的顺序与字典项添加的顺序相同。这很有用。例如,在Python中,OrderedDictionary是一个特定的类,其中Dictionary将在枚举时返回字典中键的不确定顺序 (2认同)

Bun*_*nyk 16

如果你决定使用Underscore.js,你最好这样做

_.values(ahash)[0]
Run Code Online (Sandbox Code Playgroud)

获得价值,或

_.keys(ahash)[0]
Run Code Online (Sandbox Code Playgroud)

获得关键.


nic*_*ckf 12

试试这个:

for (var firstKey in ahash) break;

alert(firstKey);  // 'one'
Run Code Online (Sandbox Code Playgroud)

  • 不,请不要这样做。这可能是正确的,但这是一个完全老套且令人困惑的解决方案。 (5认同)

ran*_*ame 7

我使用Lodash是出于防御性编码的原因。

特别是,在某些情况下,我不知道我尝试获取密钥的对象中是否有任何属性。

Lodash的“完全防御”方法将使用两个以及get

const firstKey = _.get(_.keys(ahash), 0);
Run Code Online (Sandbox Code Playgroud)


mjl*_*ano 6

使用Underscore.js,你可以做到

_.find( {"one": [1,2,3], "two": [4,5,6]} )
Run Code Online (Sandbox Code Playgroud)

它将返回[1,2,3]


Ily*_*nko 5

您可以按对象的数组位置查询对象的内容。例如:

 let obj = {plainKey: 'plain value'};

 let firstKey = Object.keys(obj)[0]; // "plainKey"
 let firstValue = Object.values(obj)[0]; // "plain value"
Run Code Online (Sandbox Code Playgroud)