[英]What is the most efficient way to get the first item from an associative array in JavaScript?
我需要从JavaScript中的一个相当大的关联数组中获取第一个项目(实际上,只是第一个键)。 这是我当前正在做的事情(使用jQuery):
getKey = function (data) {
var firstKey;
$.each(data, function (key, val) {
firstKey = key;
return false;
});
return firstKey;
};
只是猜测,但我会说这是一个更好的(阅读:更有效)的方式来做到这一点。 有什么建议?
更新:感谢有见地的答案和评论! 我忘记了我的JavaScript 101,其中规范说你不能保证关联数组中的特定顺序。 但有趣的是,大多数浏览器确实以这种方式实现它。 在获得第一个密钥之前,我不想对数组进行排序,但考虑到我的用例,这可能是不可避免的。
您可以通过引用Object.keys()
返回的第一个条目来避免创建函数:
var firstKey = Object.keys(data)[0];
对于排序键列表中的第一个条目,只需添加对.sort()
方法的调用:
var firstKey = Object.keys(data).sort()[0];
关联数组(即对象)中实际上没有第一个或最后一个元素。 您可以希望获得的唯一顺序是解析器保存元素的顺序 - 并且不保证与此一致。
但是,如果你想要第一个出现 ,那么经典的方式实际上可能会更容易一些:
function getKey(data) {
for (var prop in data)
return prop;
}
想避免继承属性?
function getKey(data) {
for (var prop in data)
if (data.propertyIsEnumerable(prop))
return prop;
}
除了Jonathan的解决方案,我们还可以扩展默认的数组功能:
Array.prototype.getKey = function() {
for (var prop in this)
if (this.propertyIsEnumerable(prop))
return prop;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.