gpt4 book ai didi

javascript - 对 Javascript 数组进行排序

转载 作者:行者123 更新时间:2023-11-30 07:09:35 25 4
gpt4 key购买 nike

我在 javascript 中有以下关联数组...

opt_array["wta"] = 23;
opt_array["cdp"] = 54;
opt_array["cdm"] = 54;
opt_array["ppv"] = 44;

我需要按值(降序)排序,然后按键(按特定顺序)排序。因此,例如在上面我需要输出 54,54,44,23 并且如果有平局则按此顺序排列键。 wta, cdp, cdm,ppv.

所以返回的数组将是...

opt_array["cdp"] = 54;
opt_array["cdm"] = 54;
opt_array["ppv"] = 44;
opt_array["wta"] = 23;

谢谢

最佳答案

您没有将 opt_array 用作数组,而是将其用作对象。

对象的属性在 JavaScript 中是无序的,您不能以任何特定顺序排列它们。

唯一出现的时间顺序似乎是当您将数组用作数组并使用数组“索引”时,它们是数字字符串。 (是的,really。虽然我们倾向于将它们写成数字,但它们实际上是属性名称,并且属性名称始终是字符串。)

您可以从 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 用于什么目的,这可能都没有用。

关于javascript - 对 Javascript 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15366355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com