【问题标题】:Javascript 2D array sorting - by numerical valueJavascript 2D数组排序 - 按数值
【发布时间】:2013-03-14 18:36:14
【问题描述】:

我看到了另外几篇与这个问题类似的帖子,但没有一个适用于我的场景,并且不知道如何解决这个问题(例如 Sort a 2D array by the second value

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

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

标签[“库存 A”、“库存 B”、“库存 C”、“库存 D”]

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

我想要一个二维数组

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

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

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

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

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

提前致谢。

【问题讨论】:

    标签: javascript sorting multidimensional-array


    【解决方案1】:

    我想要一个二维数组

    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;
    });
    

    【讨论】:

    • @TJ - 谢谢你,我能问一下你如何/为什么使用 a.quantity 吗?在我的例子中,这是否有价值?
    • 为什么不只是return (a - b);?两个if 语句似乎没有必要。
    • @ErikE:我只是习惯于这样写(例如,用于字符串等)。当然你说的很对,如果你在做数字,你可以做return a.quantity - b.quantity;
    猜你喜欢
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多