繁体   English   中英

对整数数组进行排序

[英]Sorting an array of arrays of integers

我有一个可变维度,其中包含数组每个元素的最大大小,例如:

const dimensions = [10, 6, 4]

我还有一个数组数组,其中包含与dimensions数组大小一样多的整数,例如:

let boxes = [
    [1, 2, 1],
    [10, 2, 4],
    [4, 1, 1],
    [10, 2, 3]
]

对于boxes每个数组,没有元素的dimensions会高于其对应元素。

我想找到一种这些数组进行排序的方法,以便排序后的数组boxes是:

[
    [1, 2, 1],
    [4, 1, 1],
    [10, 2, 3],
    [10, 2, 4]
]

如您所见,这不仅仅是按数组的第一个元素排序。 它按第一个元素排序,如果它们相等,则按第二个元素排序,以此类推。

对于每个数组数组,我都有一个相关的dimensions变量。 但是维度可以是任何东西(也可以是任何长度!)(因此,数组当然具有相同的长度)。

我在 Javascript 中这样做,但也欢迎使用伪代码。

PS - 这不是作业的一部分,我试图抽象掉大部分不必要的东西。

您可以使用Array.reduce对值进行排序以比较每个正在排序的数组中的值,仅在当前为0时才更新比较结果(即到目前为止的值已经相等):

 let boxes = [ [1, 2, 1], [10, 2, 4], [4, 1, 1], [10, 2, 3] ] boxes.sort((a, b) => a.reduce((c, v, i) => c ? c : v - b[i], 0)); console.log(boxes);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM