如何根据另一个数组

时间:2017-07-06 07:00:10

标签: javascript angularjs algorithm

我有一个数组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]。任何帮助,将不胜感激。感谢

2 个答案:

答案 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;
&#13;
&#13;  

答案 1 :(得分:0)

您可以将数组合并为一个数组。按X的原始值排序,然后再分成2个数组。

&#13;
&#13;
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;
&#13;
&#13;