按排序顺序迭代 Javascript 关联数组

2022-08-30 05:36:27

假设我有一个Javascript关联数组(又名哈希,又名字典):

var a = new Array();
a['b'] = 1;
a['z'] = 1;
a['a'] = 1;

如何按排序顺序迭代密钥?如果它有助于简化事情,我甚至不需要值(它们都只是数字1)。


答案 1

您可以使用 Object.keys 内置方法:

var sorted_keys = Object.keys(a).sort()

(注意:这不适用于不支持 EcmaScript5 的非常旧的浏览器,特别是 IE6、7 和 8。有关详细的最新统计信息,请参阅此表)


答案 2

您无法直接迭代它们,但可以找到所有键,然后对它们进行排序。

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";