获取 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
关键字; let
或 const
是不够的。
没有。请不要这样做。这可能是正确的,但它是一个完全老套且令人困惑的解决方案。【参考方案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 对象的第一个键名 [重复]的主要内容,如果未能解决你的问题,请参考以下文章