有点老套,但确实有效。
var A = [0.5, 0.6, 0.5, 0.7, 0.8, 0.1];
var B = ['a', 'b', 'c', 'd', 'e', 'f'];
var all = [];
for (var i = 0; i < B.length; i++) {
all.push({ 'A': A[i], 'B': B[i] });
}
all.sort(function(a, b) {
return a.A - b.A;
});
A = [];
B = [];
for (var i = 0; i < all.length; i++) {
A.push(all[i].A);
B.push(all[i].B);
}
console.log(A, B);
jsFiddle.
输出
0.1, 0.5, 0.5, 0.6, 0.7, 0.8
["f", "a", "c", "b", "d", "e"]
基本上,我们在一个新数组中创建具有A 和B 之间明确联系的对象,然后sort() 这样做。
那我回去重建原来的两个数组。
更新
Már Örlygsson 在 cmets 中提出了一个很好的观点。他建议不要生成像 {A: 0.5, B: 'a'} 这样的对象,而是将 A 和 B 值放在像 [0.5, 'a'] 这样的数组中。
这个应该更快,但如果需要调试all 数组,它的可读性会稍差。如果您遇到性能问题,我将由您决定,请分析这两种方法并选择最快的方法。