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)
这是一个工作小提琴.
您可以创建一个对象数组,其中对象的一个属性是字符串(包含“aaaaa”、“cccccc”、“zzzzzz”),另一个属性是数字(7,1、 3)。这样,您将只有一个数组,您可以按任何属性对其进行排序,而另一个属性将保持同步。
| 归档时间: |
|
| 查看次数: |
2939 次 |
| 最近记录: |