2017-07-06 11 views
1

私は配列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]と分類したいと思います。どんな助けもありがとう。おかげ他の配列の内容に基づいて配列をソートする方法

+1

1.あなたはそれを自分で解決しようとしましたY 2.仕分けの背後にあるロジックは何ですか?いくつかのコードを表示してください。 – Sveta

答えて

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);

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);

関連する問題