获取 JavaScript 对象的第一个键名 [重复]

Posted

技术标签:

【中文标题】获取 JavaScript 对象的第一个键名 [重复]【英文标题】:Get the first key name of a JavaScript object [duplicate] 【发布时间】:2011-03-18 22:17:21 【问题描述】:

假设我们有以下 javascript 对象:

ahash = "one": [1,2,3], "two": [4,5,6]

是否有返回给定对象的第一个键名的函数?

从上面的示例中,我想通过该函数获得one

【问题讨论】:

你要的是对象的第一个键的值还是第一个键名?我很困惑。 let [first] = Object.keys(ahash) 【参考方案1】:

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

 let obj = plainKey: 'plain value';

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

 /* or */

 let [key, value] = Object.entries(obj)[0]; // ["plainKey", "plain value"]

 console.log(key); // "plainKey"
 console.log(value); // "plain value"

【讨论】:

好像没有回答问题 使用明确构造的对象(例如所用问题)的示例将提供更好的答案。这个答案基本上是正确的,但它需要对 Javascript 的了解太细,才能轻松破译其含义。 感谢评论,改成更易懂的代码。【参考方案2】:

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

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

使用Lodash 的“完全防御”方法将同时使用keys 和get:

const firstKey = _.get(_.keys(ahash), 0);

【讨论】:

【参考方案3】:

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

Object.keys(ahash)[0];

【讨论】:

也适用于浏览器 这是一段病态的代码。我原以为必须用一个愚蠢的 dict 键把所有东西都弄得一团糟: 我想指出for (key in dict) 的执行速度可能明显更快,O(1) 而不是 O(n)。这一点都不傻。 对未来的我...请注意,Object 上还有一个“值”方法,即 Object.value,如果您想要第一个键的值 @engineerDave,这就是未来的你。我们已经更改了我们的 *** 帐户句柄,并且我们通过发明时间旅行赚了一大笔钱,但这不是重点。我只是想说,“谢谢”,这个小便条帮助了我。【参考方案4】:

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

_.values(ahash)[0]

获取价值,或

_.keys(ahash)[0]

获取密钥。

【讨论】:

【参考方案5】:

使用 Underscore.js,你可以做到

_.find( "one": [1,2,3], "two": [4,5,6] )

它将返回 [1,2,3]

【讨论】:

lodash 也是如此 :) 还有一个 findKey 方法返回键(而不是值)【参考方案6】:

您可以同时将元素放入数组和散列中。

var value = [1,2,3];
ahash = "one": value;
array.push(value);

array 可用于按顺序获取值,而 hash 可用于通过键获取值。当您删除和添加元素时,请保持随身携带。

【讨论】:

【参考方案7】:

试试这个:

for (var firstKey in ahash) break;

alert(firstKey);  // 'one'

【讨论】:

注意必须使用var关键字; letconst 是不够的。 没有。请不要这样做。这可能是正确的,但它是一个完全老套且令人困惑的解决方案。【参考方案8】:

哈希中没有“第一个”键这样的东西(Javascript 称它们为对象)。它们基本上是无序的。你的意思是只选择任何一个键:

for (var k in ahash) 
    break


// k is a key in ahash.

【讨论】:

应该检查 obj.hasOwnProperty(prop) 是否我也会添加 以及如何获得其他的? 我认为这是不推荐的解决方案。这使用了名为“变量提升”的不良功能。并且 ES6 建议不要在 for 循环中使用 'var' EMCA 脚本规范使字典有序。它们是“有序字典”。枚举的顺序与字典项的添加顺序相同。这很有用。例如,在 Python 中,OrderedDictionary 是一个特定的类,其中 Dictionary 将在枚举时返回字典中键的不确定排序 @JayDayZee ECMAScript 没有一个叫做“字典”的东西,对吧?这个答案(***.com/a/5525820/14343)似乎表明对象是无序的,而地图是有序的。这符合你的理解吗?

以上是关于获取 JavaScript 对象的第一个键名 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Yii的数组助手类

Javascript:使用自定义键名和值将字符串数组解析为对象

javascript对象,php数组以键名排序

JavaScript如何使用变量设置对象的键名 /

javascript的对象:仅获取对象的第一个键[重复]

如何连接(变量+对象键名)以点表示法获取对象值[重复]