2

我已经看到了与这个问题类似的另外几篇文章,但没有一个适用于我的场景并且迷失了如何解决这个问题(例如按第二个值对 2D 数组进行排序

我将解释这个问题——我在 JavaScript 中面临的问题;

我有两个数组,用于在 3rd 方产品中创建图表。我有以下变量;

标签[“股票 A”、“股票 B”、“股票 C”、“股票 D”]

值[“200”、“1000”、“900”、“800”]

我想要这个在二维数组中

排序[“库存 B,1000”,“库存 C,900”,“库存 D,800”,“库存 A,200”]

如果可能的话,我想按数值排序。问题是,当我在上面发布的问题中使用解决方案时,它只会将该值与另一个值进行比较。我需要这个来遍历已经存储在数组中的每个值。

上周我在某个地方发现了另一种非常冗长的方式,但它正在对诸如 100、1000 之类的值进行排序——我认为这归结为不是整数等,但没有这样的运气。周五我一怒之下删除了代码。

我希望那里的某个好心人可以帮助新的编码员。O 这些值以字符串形式出现,因此需要将它们转换为整数。

数组中有无限数量的条目,一旦我对这些条目进行了正确排序,我需要保留前 10 个,然后将其他条目分组到一个总数中 - 所以我将有 11 个条目。但是,我需要先进行排序,然后才能解决这个问题。

提前致谢。

4

1 回答 1

4

我想要这个在二维数组中

sorted["Stock B, 1000","Stock C, 900", "Stock D, 800", "Stock A, 200"]

那不是二维数组,而是字符串的一维数组。这将是一个二维数组:

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;
});
于 2013-03-25T10:04:20.107 回答