假设我有一个Javascript关联数组(也称为。哈希,也就是。字典):
var a = new Array();
a['b'] = 1;
a['z'] = 1;
a['a'] = 1;
如何按排序顺序遍历键?如果它有助于简化事情,我甚至不需要这些值(它们都只是数字1)。
发布于 2009-05-21 00:01:20
您不能直接迭代它们,但您可以找到所有键,然后对它们进行排序。
var a = new Array();
a['b'] = 1;
a['z'] = 1;
a['a'] = 1;
function keys(obj)
{
var keys = [];
for(var key in obj)
{
if(obj.hasOwnProperty(key))
{
keys.push(key);
}
}
return keys;
}
keys(a).sort(); // ["a", "b", "z"]
然而,没有必要使变量'a‘成为数组。您实际上只是将其用作对象,并且应该像这样创建它:
var a = {};
a["key"] = "value";
发布于 2012-06-30 19:40:30
您可以使用Object.keys内置方法:
var sorted_keys = Object.keys(a).sort()
(注意:这不适用于不支持EcmaScript5的非常旧的浏览器,特别是IE6、7和8。有关详细的最新统计信息,请参阅this table)
发布于 2009-05-21 00:21:08
您甚至可以将其原型化为object:
Object.prototype.iterateSorted = function(worker)
{
var keys = [];
for (var key in this)
{
if (this.hasOwnProperty(key))
keys.push(key);
}
keys.sort();
for (var i = 0; i < keys.length; i++)
{
worker(this[ keys[i] ]);
}
}
和用法:
var myObj = { a:1, b:2 };
myObj.iterateSorted(function(value)
{
alert(value);
}
https://stackoverflow.com/questions/890807
复制相似问题