Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取JavaScript对象的第一个键名_Javascript - Fatal编程技术网

获取JavaScript对象的第一个键名

获取JavaScript对象的第一个键名,javascript,Javascript,假设我们有以下JavaScript对象: ahash = {"one": [1,2,3], "two": [4,5,6]} 是否有一个函数返回给定对象的第一个键名 从上面的例子中,我想得到一个,作为该函数的结果。哈希中没有“第一个”键(Javascript称之为对象)。它们基本上是无序的。您的意思是只需选择任意一个键: for (var k in ahash) { break } // k is a key in ahash. 试试这个: f

假设我们有以下JavaScript对象:

ahash = {"one": [1,2,3], "two": [4,5,6]}
是否有一个函数返回给定对象的第一个键名


从上面的例子中,我想得到一个,作为该函数的结果。

哈希中没有“第一个”键(Javascript称之为对象)。它们基本上是无序的。您的意思是只需选择任意一个键:

for (var k in ahash) {
    break
}

// k is a key in ahash.
试试这个:

for (var firstKey in ahash) break;

alert(firstKey);  // 'one'

您可以将元素放入数组中,同时进行哈希运算

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

数组可用于按顺序获取值,哈希可用于按键获取值。删除和添加元素时,请随身携带。

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

Object.keys(ahash)[0];

使用下划线.js,您可以

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

如果您决定使用下划线.js,它将返回[1,2,3]

,您最好这样做

_.values(ahash)[0]
获得价值,或

_.keys(ahash)[0]
获取密钥。

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

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

“完全防御”的方法将使用以下两种方法:


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

 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"


也适用于浏览器这是一段糟糕的代码。我原以为必须用一个愚蠢的for键插入dict来把一切都搞乱:我想指出,
for(key-in-dict)
很可能执行得更快,O(1)而不是O(n)。这一点也不傻。为了未来的我。。。请注意,如果您想要第一个的值,则在Object上还有一个“value”方法,即Object.valuekey@engineerDave,这是未来的你。我们改变了stackOverflow账户的账号,通过发明时间旅行我们赚了一大笔钱,但这不是重点。我只是想说声“谢谢”,这张小纸条帮了我的忙。我应该检查一下obj.hasOwnProperty(prop)是否我也会添加,以及如何获取其他内容?我认为这不是推荐的解决方案。这使用了名为“变量提升”的错误功能。ES6建议不要在循环中使用'var',因为EMCA脚本规范使字典有序。它们是“有序词典”。枚举顺序与添加字典项的顺序相同。这是有用的。例如,在Python中,OrderedDictionary是一个特定的类,其中Dictionary将在上返回字典中键的不确定顺序enumeration@JayDayZeeECMAScript没有一个叫做“字典”的东西,对吗?这个答案()似乎表明对象是无序的,映射是有序的。这与您的理解相符吗?lodash也是如此:)还有一个
findKey
方法返回键(而不是值),您想要对象的第一个键的值还是第一个键的名称?我很困惑。
let[first]=Object.keys(ahash)
它似乎没有回答这个问题一个使用显式构造的对象(如所使用的问题)的示例将提供更好的答案。这个答案基本上是正确的,但它需要对Javascript有太微妙的了解,无法轻松解读其含义。感谢您的评论,改为更易于理解的代码。请注意,您必须使用
var
关键字
let
const
不够。
 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"