Javascript对象[排序]

Javascript Object [sorting]

如果我在 javascript 对象中使用整数作为键,它会自动短路。

var obj = {"z": 100, "x": 75, "d": 116, "c": 15, "10":123, "9":12}
console.log(obj)

输出:

{9: 12, 10: 123, z: 100, x: 75, d: 116, c: 15}

它不维护整数的序列,它适用于字母字符串。

我的问题是为什么会这样?如果我需要管理顺序,如何克服这个问题?

你能试试按地图排序吗?

之前的问题我理解错了

Object[] obj = new Object[]{"z": 100, "x": 75, "d": 116, "c": 15, "10":123, "9":12};
for (int i = 0; i < obj.length; i++)
{
    System.out.print(obj[i].toString() + " ");
}

喜欢

Map<String, String> objMap = new HashMap<String, String>();
objMap.put("z", 100); .....
entriesSortedByValues(objMap);

或者你可以像对待它一样JSON

var arr = [
{name: "z",
 value:100
 }, 
.....];

然后写了一个函数 喜欢

funtion sortObj(column)
{
   return function(x,y)
          {
             if(x[column] > y[column])
             {
                return 1;
             }
             elseif(x[column] < y[column]){return -1;}
             else{return 0;}
          }
}

array.sort(sortObj(value));

不保证对象键顺序。参见 Does JavaScript Guarantee Object Property Order?。使用对象数组来保证排序。

var arr = [{"z":100}, {"x":75}, {"d":116}, {"c":15}, {"10":123}, {"9":12}]

如果要保持顺序,请使用数组。这是维护 javascript.

中顺序的方法之一

JavaScript 不保证对象中属性的顺序。如果您想要类似于保证顺序的对象的东西,请查看 Map 对象。

var myMap = new Map();
myMap.set('z', 100);
myMap.set('x', 75);
myMap.set('d', 116);
myMap.set('c', 15);
myMap.set('10',113);
myMap.set('9', 12);

地图中的顺序 IS 保证

数组也保持顺序,但不是按名称键控,而是按索引键控。

如果您想保持顺序,请使用“9.0”、“10.0”而不是 9 or 10

试试这个

{"z":100,"x":75,"d":116,"c":15,"10.0":123,"9.0":12}

这是一个已知问题issue 164