问题描述
我有一个可变的尺寸,其中包含数组中每个元素的最大尺寸,例如:
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);