javascript,排序2依赖于数组

Bob*_*b J 12 javascript arrays

几个小时我一直试图弄清楚如何依赖排序2阵列.

假设我有2个阵列.

第一:

array1 = ['zzzzz', 'aaaaaa', 'ccccc'];
Run Code Online (Sandbox Code Playgroud)

第二个:

array2 = [3, 7, 1];
Run Code Online (Sandbox Code Playgroud)

我排序第一个,array1.sort();它变成了[aaaaaa, cccccc, zzzzzz现在我想要的是第二个变成了[7, 1, 3]

我认为这很简单但是我试图在一些更复杂的东西中实现它,我是新的并且我一直在混合东西.

谢谢

Eze*_*tor 12

我会将它们"压缩"成一个对象数组,然后使用自定义排序回调对其进行排序,然后将它们"解压缩"回到您想要的两个数组中:

var array1 = ['zzzzz', 'aaaaaa', 'ccccc'],
    array2 = [3, 7, 1],
    zipped = [],
    i;

for(i=0; i<array1.length; ++i) {
    zipped.push({
        array1elem: array1[i],
        array2elem: array2[i]
    });
}

zipped.sort(function(left, right) {
    var leftArray1elem = left.array1elem,
        rightArray1elem = right.array1elem;

    return leftArray1elem === rightArray1elem ? 0 : (leftArray1elem < rightArray1elem ? -1 : 1);
});

array1 = [];
array2 = [];
for(i=0; i<zipped.length; ++i) {
    array1.push(zipped[i].array1elem);
    array2.push(zipped[i].array2elem);
}

alert('Sorted arrays:\n\narray1: ' + array1 + '\n\narray2: ' + array2);
Run Code Online (Sandbox Code Playgroud)

这是一个工作小提琴.


Yur*_*ter 1

您可以创建一个对象数组,其中对象的一个​​属性是字符串(包含“aaaaa”、“cccccc”、“zzzzzz”),另一个属性是数字(7,1、 3)。这样,您将只有一个数组,您可以按任何属性对其进行排序,而另一个属性将保持同步。