如何获得js对象的正确顺序?

时间:2014-02-17 05:22:41

标签: javascript

我有关于js obj命令的问题:

当我定义:

var objJSON = {};
objJSON[31] = '123'; ------------- (1)
objJSON[23] = '456'; ------------- (2)

警告对象:

alert(JSON.stringify(objJSON, null, 4));

它显示:

    "
    {
       "23":"456",
       "31":"123"
    }
    "

    I would like to get the object by the order of inserting:
    "
    {
       "31":"123",
       "23":"456"
    }
    "

怎么做?

6 个答案:

答案 0 :(得分:3)

对象的属性没有保证的顺序。如果键值位置很重要,我建议使用一组对象:

var x = [];
x.push({
  key: 23,
  value: '123'
});
x.push({
  key: 31,
  value: '456'
});

JSON.stringify(x); // [{"key":23,"value":"123"},{"key":31,"value":"456"}]

答案 1 :(得分:1)

无法计算JavaScript对象以维护顺序。您可能希望使用数组,这将保留索引顺序。

只需在第一行中将{}更改为[]即可。

var objJSON = [];

答案 2 :(得分:0)

当您需要一个数组时,您正在使用一个对象(可以将其视为“地图”)。物品不保证订单。如果您以后碰巧添加其他房产怎么办?它也会扭曲订单。尝试使用对象的数组/列表/向量。例如:

var array = [];
array[0] = { 31: '123' };
array[1] = { 23: '456' };

答案 3 :(得分:0)

字典是一种不按定义保留顺序的数据结构。 您需要按键或值自行对字典进行排序。

检查一下:

sort a dictionary (or whatever key-value data structure in js) on word_number keys efficiently

答案 4 :(得分:0)

试试这个:

var objList = [];
objList.push({"31" : "123"});
objList.push({"23" : "456"});
alert(JSON.stringify(objList));

答案 5 :(得分:-1)

您需要将键值对放在一个数组中,以便获得

{
  "array": ["31":"123", "23":"456"]
}