对整数数组进行排序

问题描述

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

const dimensions = [10,6,4]

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

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

对于Boxes中的每个数组,没有元素会比dimensions中的对应元素高。

我想找到一种方法排序这些数组,以便排序后的数组Boxes为:

[
    [1,3],4]
]

正如您所看到的,这不仅仅是关于按数组的第一个元素进行排序。它按第一个元素排序,如果相等,则按第二个排序,依此类推。

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

我正在用Javascript进行此操作,但是也欢迎使用伪代码

PS-这不是作业的一部分,我试图将大部分不必要的内容抽象出来。

解决方法

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

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

boxes.sort((a,b) => a.reduce((c,v,i) => c ? c : v - b[i],0));

console.log(boxes);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...