
javascriptをしています。そしてArrayを2つ用意してArray1の変化をArray2にも同時に適用しながらソートしたいと考えているのですが、どんな方法で実行すればよいのか分かりません。
例としまして
4 あ 2 お
2 お 4 あ
6 う → 5 い
5 い 6 う
7 え 7 え
という具合に、Array1には4,2,6,5,7がありArray2にはあおういえという情報がはいっています。
そしてArray1の数値を小さい順に並べ替えるのと同時にそれに合うようにArray2の情報も変えるということがしたいのです。
Arrayには多重ArrayというArray[0][1]というのもありますが、これも使えるのでしょうか?
アドバイスでもありがたいですが、プログラムの具体例を上げてくれると更にありがたいです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
var A = [ 4, 2, 6, 5, 7 ];
var B = [ 'お','あ','い','う','え' ];
function merge (a, b) {
var result = [];
var len = a.length;
for (var i = 0; i < len; i++)
result[i] = [a[i], b[i]];
return result;
}
function sortCbFunc (a, b) {
return (a[0] > b[0]) - (a[0] < b[0]);
}
alert (merge (A, B).sort (sortCbFunc));
alert ([
[4,'お'],
[2,'あ'],
[6,'い'],
[5,'う'],
[7,'え']
].sort (sortCbFunc));
No.3
- 回答日時:
すでに回答がでていますが、タイプが少し違うもの…
普通の関数にしてあるので使い方は、
sortArray( 配列,[配列],[配列]・・・ )
となります。(配列数は可変)
(全角空白は半角に)
function sortArray(){
var a = arguments, n = a.length;
if(n == 0) return;
var ary = [], i, j, f = false, len = a[0].length;
for(i=0; i<n; i++)
f = f || Object.prototype.toString.call(a[i])!="[object Array]" || len != a[i].length;
if(f)
throw new Error("lengths of arrays are not same");
for(j=0; j<len; j++){
ary[j] = [];
for(i=0; i<n; i++)
ary[j].push(a[i][j]);
}
ary.sort();
for(j=0; j<len; j++)
for(i=0; i<n; i++)
a[i][j] = ary[j][i];
}
var A = [ 4, 4, 4, 3, 3 ,3];
var B = [ 'お','あ','い','う','え','う'];
var C = [ 4, 1, 3, 5, 7, 4];
sortArray(A, B, C);
alert(A + "\n" + B + "\n" + C);
No.2
- 回答日時:
// 全角空白は半角空白に置換してください。
function Hoge (array1, array2) {
this.array1 = array1;
this.array2 = array2;
return this;
}
Hoge.prototype.sort = function () {
var array1, array2, array3, array, i, l;
array1 = this.array1;
array2 = this.array2;
array3 = [];
if (array1.length !== array2.length) {
throw new RangeError('array1.length isn\u0027t equivalent to array2.length');
}
for (i = 0, l = array1.length; i < l; ++i) {
array3.push([array1[i], array2[i]]);
}
array3.sort();
for (i = 0, l = array3.length; i < l; ++i) {
array = array3[i];
array1[i] = array[0];
array2[i] = array[1];
}
};
var array1 = [4,2,5,6,7];
var array2 = ['お','あ','い','う','え'];
var hoge = new Hoge (array1, array2);
hoge.sort();
alert(hoge.array1); // [2, 4, 5, 6, 7]
alert(hoge.array2); // ["あ", "お", "い", "う", "え"]
// (備考) 初めから array3 (二次元配列) になっていればここまで面倒なことをしなくて済みます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#テキストボックスの文字を配...
-
同じIDで定義した要素の配列を...
-
javascript 変数名の連結をしたい
-
複数のフィードの読み込みが日...
-
("Scripting.Dictionary")につ...
-
jspからjavascriptの変数引継ぎ
-
順列生成アルゴリズムについて...
-
JavaScriptで簡単なクイズを作...
-
WSH(Jscript)でファイル一覧
-
二次元配列の全要素の全要素を...
-
配列の1要素を代入した変数を使...
-
textareaに入力されたデータを...
-
二次元配列を使って順位をだす...
-
Ajax:getElementsByTagNameで...
-
javascriptの2次元配列をソート...
-
JavaScript window.openで開く...
-
functionから別のfunctionを実...
-
○歳△ヶ月と×日を計算してくれる...
-
JavaScriptで文字列の特定文字...
-
jslintのエラーについて質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
javascript 変数名の連結をしたい
-
1から20までの整数から、重複な...
-
空の配列に2次元配列の追加
-
二次元配列を使って順位をだす...
-
C#テキストボックスの文字を配...
-
javascriptからURLパラメータ値...
-
undefinedを表示させない方法は...
-
JavaScriptにおける[] とか :...
-
javascriptで行を抽出したいです。
-
javascriptで2つのArrayの...
-
textareaに入力されたデータを...
-
二次元配列の全要素の全要素を...
-
配列を作って総当たりで距離を...
-
[JS] setAttributeで保存される...
-
順列生成アルゴリズムについて...
-
ソートで
-
重複のない乱数の表示をするには?
-
javascriptで配列の重複判定の...
おすすめ情報