您不是将opt_array
其用作数组,而是将其用作对象。
对象的属性在 JavaScript 中是无序的,您不能将它们按任何特定顺序排列。
唯一出现的时间顺序似乎是当您将数组用作数组并使用数组“索引”时,它们是数字字符串。(是的,真的。虽然我们倾向于将它们写成数字,但它们实际上是属性名称,而属性名称始终是字符串。)
您可以从opt_array
数组中获取所有属性名称,然后对它们进行排序,然后循环以产生输出。例如:
var index;
var names = Object.keys(opt_array);
names.sort();
for (index = 0; index < names.length; ++index) {
console.log(names[index] + ": " + opt_array[names[index]]);
}
(使用Object.keys
,这是一个ES5功能,并非所有浏览器都存在。您可以为早期的浏览器填充它。)
或者,如果您愿意,您可以拥有一个对象数组,并按这些对象的属性对数组进行排序:
opt_array = [
{key: "wta", value: 23},
{key: "cdp", value: 54},
{key: "cdm", value: 54},
{key: "ppv", value: 44}
];
opt_array.sort(function(a, b) {
var rv;
if (a.key < b.key) {
rv = -1;
}
else if (a.key > b.key) {
rv = 1;
}
else {
rv = 0;
}
return rv;
});
但这对于您使用的任何东西都可能没有用opt_array
。