私はアイデアがマスター1であるものである第一の配列を、並べ替えることであり、私は反映したい2以上の配列Javascriptの同期2以上の配列
var Arr1 = [1,1,3,2];
var Arr2 = [a,b,c,d];
をしました2番目の配列の新しい並べ替え、結果はよくなるので
var Arr1 = [1,1,2,3];
var Arr2 = [a,b,d,c];
「すばやく」する方法はありますか?
私はアイデアがマスター1であるものである第一の配列を、並べ替えることであり、私は反映したい2以上の配列Javascriptの同期2以上の配列
var Arr1 = [1,1,3,2];
var Arr2 = [a,b,c,d];
をしました2番目の配列の新しい並べ替え、結果はよくなるので
var Arr1 = [1,1,2,3];
var Arr2 = [a,b,d,c];
「すばやく」する方法はありますか?
ジップ 'em、sort' em、unzip 'em。
var zip = [];
for (var i = 0; i < Arr1.length; i++) {
zip.push([Arr1[i], Arr2[i]]);
}
zip.sort(function (a, b) { return a[0] - b[0]; });
for (var i = 0; i < zip.length; i++) {
Arr1[i] = zip[i][0];
Arr2[i] = zip[i][1];
}
Tnx、正常に動作します。最後は一種の行列です。 –
あなたは、アンダースコアを使用している場合、あなたはこのアイデアを試すことができます:非常にプレーンJavaScriptでは
var sorted =_.map(new Array(4), function(i){
return {
a:Arra1[i],
b:Arr2[i]
}
}).sort(function(item){return item.a; })
やJS
二つの配列がARR1、ARR2であり、彼らが持っていると仮定しvar sorted = new Array(4).map(function(item,index){
return {
a:Arra1[i],
b:Arr2[i]
}
};
sorted.sort(function(p,b){ return p.a-b.a;})
Arr1 = sorted.map(function(item){return item.a});
Arr2 = sorted.map(function(item){return item.b});
同じ長さ:
1)2つの配列を組み合わせる:
var combined = [];
for (var i = 0; i < Arr1.length; i++) {
combined.push({'arr1': Arr1[i], 'arr2': Arr2[i]});
}
ソート一緒
2):
combined.sort(function(a, b) {
return a.arr1 < b.arr1; //ascending based on arr1
});
3)セパレート:
for (var i = 0; i < combined.length; i++) {
Arr1[i] = combined[i].arr1;
Arr2[i] = combined[i].arr2;
}
あなたは一時的な配列としてインデックスを使用し、arr1
の値でそれを並べ替えることができます。結果をarr2
にマップします。
var arr1 = [1, 1, 3, 2],
arr2 = ['a', 'b', 'c', 'd'],
indices = arr1.map(function (_, i) { return i; });
indices.sort(function (a, b) { return arr1[a] - arr1[b]; });
arr2 = indices.map(function (a) { return arr2[a]; });
console.log(arr2);
ES6
var arr1 = [1, 1, 3, 2],
arr2 = ['a', 'b', 'c', 'd'];
arr2 = arr1
.map((_, i) => i)
.sort((a, b) => arr1[a] - arr1[b])
.map(a => arr2[a]);
console.log(arr2);
'.sort'方法が唯一の存在です。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort –