我看过另外两篇类似于这个问题的帖子,但没有一个适用于我的场景,也没有找到解决方法(例如Sort a 2D array by the second value)
我将解释这个问题 - 我在JavaScript中遇到的问题;
我有两个数组,我用它来创建第三方产品中的图表。我有以下变量;
标签[“股票A”,“股票B”,“股票C”,“股票D”]
值[“200”,“1000”,“900”,“800”]
我想在2D数组中使用
排序[“股票B,1000”,“股票C,900”,“股票D,800”,“股票A,200”]
如果可能,我想按数值排序。问题是,当我在上面发布的问题中使用解决方案时,它只将值与另一个值进行比较。我需要这个来遍历已经存储在数组中的每个值。
上周我在某个地方发现了另一个非常漫长的方式,但它正在排序100到1000之间的价值 - 我认为这不是整数等但没有这样的运气。我星期五在愤怒中删除了代码。
我希望那里的某种灵魂可以帮助一个新的程序员。 O值以字符串形式出现,因此需要将它们转换为整数。
阵列中有无限数量的条目,一旦我正确地对它们进行了排序,我需要保留前10名,然后将其他人分组到一个总数的组中 - 所以我将有11个条目。但是,在我解决这个问题之前,我需要排序。
提前致谢。
答案 0 :(得分:4)
我想在2D数组中使用
sorted["Stock B, 1000","Stock C, 900", "Stock D, 800", "Stock A, 200"]
那不是2D数组,而是单个字符串数组。这将是一个2D数组:
sorted = [["Stock B", 1000], ["Stock C", 900], ["Stock D", 800], ["Stock A", 200]];
...你可以按照第二个值排序:
sorted.sort(function(a, b) {
var avalue = a[1],
bvalue = b[1];
if (avalue < bvalue) {
return -1;
}
if (avalue > bvalue) {
return 1;
}
return 0;
});
但是对于一维对象数组你可能会更好:
sorted = [
{name: "Stock B", quantity: 1000},
{name: "Stock C", quantity: 900},
{name: "Stock D", quantity: 800},
{name: "Stock A", quantity: 200}
];
...你可以这样排序:
sorted.sort(function(a, b) {
var avalue = a.quantity,
bvalue = b.quantity;
if (avalue < bvalue) {
return -1;
}
if (avalue > bvalue) {
return 1;
}
return 0;
});