我有一个数组X = [12,14,12,45,12],另一个数组Y = [34,12,23,47,20]。我正在排序X数组,所以现在X = [12,12,12,14,45]。现在我想将Y排序为Y = [34,23,20,12,47]。任何帮助,将不胜感激。感谢
答案 0 :(得分:4)
您可以使用引用X的自定义比较器函数构建索引数组并对其进行排序,然后使用该数组来排序"排序" Y:
var X = [12,14,12,45,12];
var Y = [34,12,23,47,20];
var xIndexes = [];
X.forEach((value, index) => xIndexes.push(index));
xIndexes.sort((a, b) => X[a] < X[b] ? -1 : X[a] > X[b] ? 1 : 0);
var newX = [];
var newY = [];
xIndexes.forEach((index) => {
newX.push(X[index]);
newY.push(Y[index]);
});
console.log(newX);
console.log(newY);
&#13;
答案 1 :(得分:0)
您可以将数组合并为一个数组。按X
的原始值排序,然后再分成2个数组。
const X = [12,14,12,45,12];
const Y = [34,12,23,47,20];
const [Xsorted, Ysorted] =
X.map((x, i) => [x, Y[i]])
.sort((a, b) => a[0] - b[0])
.reduce((arrs, [x, y]) => {
const [X, Y] = arrs;
X.push(x);
Y.push(y);
return arrs;
}, [[], []]);
console.log(Xsorted);
console.log(Ysorted);
&#13;