我有关于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"
}
"
怎么做?
答案 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"]
}