Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 排序此阵列的算法_Javascript_Arrays_Algorithm_Sorting - Fatal编程技术网

Javascript 排序此阵列的算法

Javascript 排序此阵列的算法,javascript,arrays,algorithm,sorting,Javascript,Arrays,Algorithm,Sorting,我目前正在用CSS制作魔方 测试区: 一切正常。我可以转向所有方向(使用辅助div) 现在我需要在转弯后存储位置 多维数据集有许多具有数据属性的div,这些属性定义了三维网格中的位置。 e、 g. 基本上每个维度都有一个数组 这是在最外侧的x轴上旋转90度(一圈)时排序的一个级别(参见代码笔示例并单击“触发x 1”一次) 该数组需要修改。当然有一些模式,但我很难弄清楚。显然,这是“最容易的侧翻”。其他的可能会更难一些 存储立方体时,我只需切换数据属性值,并在同一轴上沿同一方向转动零件。这一部分是

我目前正在用CSS制作魔方

测试区:

一切正常。我可以转向所有方向(使用辅助div)

现在我需要在转弯后存储位置

多维数据集有许多具有数据属性的div,这些属性定义了三维网格中的位置。
e、 g.

基本上每个维度都有一个数组

这是在最外侧的x轴上旋转90度(一圈)时排序的一个级别(参见代码笔示例并单击“触发x 1”一次)

该数组需要修改。当然有一些模式,但我很难弄清楚。显然,这是“最容易的侧翻”。其他的可能会更难一些

存储立方体时,我只需切换
数据属性
,并在同一轴上沿同一方向转动零件。这一部分是经过深思熟虑的,而且很有效

所以我需要一个算法来执行排序:(该轴的其他级别将只使用相同的模式,因为只有第一个值改变(1,2,3))

从…起 到
也许这会有所帮助:您可以对数组使用排序方法:

myArr.sort(function(a, b) {
    if (a.z > b.z) {
        return 1;
    } else if (a.z < b.z) {
        return -1;
    } else {
        if (a.y > b.y) {
            return -1;
        } else {
            return 1;
        }
    }
});
myArr.sort(函数(a,b){
如果(a.z>b.z){
返回1;
}否则如果(a.zb.y){
返回-1;
}否则{
返回1;
}
}
});

谢谢。这真的很有帮助。也许你可以解释一下。我的大脑(今天)不明白。。。药物过量;(.它按预期工作,部件按预期排列(除了第四轮,但这可能是我的代码中的某些内容)。基本上我传入了一个比较函数进行排序。此函数在数组中包含两个元素“a”和“b”。如果“a”在“b”之后,则比较函数需要返回“1”,如果“a”在“b”之前,则返回“-1”如果它们相同,则为0。因此,在我的回答中,我首先对对象z属性进行排序,确保较高的z是最后一个(返回1)。然后在其他情况下(当z相等时),我按y属性进行排序,确保较高的y首先显示(返回-1)。因此,第一步非常有效(单击“触发x 1”)开箱即用。只需让其余部分工作。我想Y轴和Z轴会变得更复杂,但你的答案很有帮助。Thx很多
[{
  "x": 1,
  "y": 3,
  "z": 1
}, {
  "x": 1,
  "y": 2,
  "z": 1
}, {
  "x": 1,
  "y": 1,
  "z": 1
}, {
  "x": 1,
  "y": 3,
  "z": 2
}, {
  "x": 1,
  "y": 2,
  "z": 2
}, {
  "x": 1,
  "y": 1,
  "z": 2
}, {
  "x": 1,
  "y": 3,
  "z": 3
}, {
  "x": 1,
  "y": 2,
  "z": 3
}, {
  "x": 1,
  "y": 1,
  "z": 3
}]
myArr.sort(function(a, b) {
    if (a.z > b.z) {
        return 1;
    } else if (a.z < b.z) {
        return -1;
    } else {
        if (a.y > b.y) {
            return -1;
        } else {
            return 1;
        }
    }
});