关联数组循环次序

时间:2013-07-08 08:53:41

标签: javascript

我有一个关联数组(对象),我存储从第三方加载的数据。

// 3rdPartyData is also an associative array
for(var key in 3rdPartyData) {
  cookie[key] = 3rdPartyData[key];
}

我的对象最终存储在cookie中,然后在cookie之前加载(或者如果没有cookie则创建{})。

每个页面查看来自第三方的数据在我的cookie数组中添加或更新。

问题:如果我想看看cookie,那么循环是否总是按照他们添加的顺序获得每个键,或者订单是否会被更改?

如果是这样,任何人都可以就如何管理这样的事情提出想法吗?

1 个答案:

答案 0 :(得分:0)

for(var key in some_object)中的键的顺序可以是任意顺序,当然也不总是排序,但您可以强制订单成为您想要的顺序:

for(var key in Object.keys(3rdPartyData).sort(keysSorter) {
    cookie[key] = 3rdPartyData[key];
}

keysSorter = function(a, b) {
    if (a === b) { // Should not actually be the case when sorting object keys
        return 0; 
    }
    // Compare a and b somehow and return 1 or -1 accordingly
    return a < b ? 1 : -1;
}

确保Object.keys()能够正常运作:

Object.keys = Object.keys || function(o) {  
    var result = [];  
    for(var name in o) {  
        if (o.hasOwnProperty(name))  
            result.push(name);  
        }  
    return result;  
};