myArray = new Array();
myArray["A001"] = new Array();
myArray["A001"]["B001"] = "B001";
myArray["A001"]["B002"] = new Array();
myArray["A001"]["B002"]["C001"] = "C001";
myArray["A001"]["B002"]["C002"] = "C002";
myArray["A002"] = "A002";
JavaScriptの連想配列について質問させて頂きます。
例えば上記のような配列があったとして、値とキーはそのままで
"C001" と "C002" の"B002"配列への格納順序だけ入れ替えたい場合、
どのように実装すればよろしいでしょうか?
ちなみにキーや値はサンプルで実際にはsort出来るルールはありません。。。
※入れ替え後のイメージ
---------------------------------------------------------------------
myArray = new Array();
myArray["A001"] = new Array();
myArray["A001"]["B001"] = "B001";
myArray["A001"]["B002"] = new Array();
myArray["A001"]["B002"]["C002"] = "C002"; ←格納順序が
myArray["A001"]["B002"]["C001"] = "C001"; 入れ替わった
myArray["A002"] = "A002";
---------------------------------------------------------------------
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
配列に関する誤解があるのででしょうね、
そもそもキーと値が同じである必要性も感じません。
きちんと配列でやるなら、仮に連続したC002とC003をひっくり返すとして
こんなやり方でよいかもしれません。
(念のためキーと値を同じ値を持たせておきますが・・・)
<script>
myArray = new Object();
myArray["A001"] = new Object();
myArray["A001"]["B002"] = new Array();
myArray["A001"]["B002"][0] = {key:"C001",value:"C001"}
myArray["A001"]["B002"][1] = {key:"C002",value:"C002"}
myArray["A001"]["B002"][2] = {key:"C003",value:"C003"}
myArray["A001"]["B002"][3] = {key:"C004",value:"C004"}
myArray["A001"]["B002"][4] = {key:"C005",value:"C005"}
var arr=myArray["A001"]["B002"];
for(var i=0;i<arr.length;i++){
document.write(arr[i].value+"<br>");
}
arr=arr.sort(function(a,b){return (a.value=="C002" && b.value=="C003")?1:0})
for(var i=0;i<arr.length;i++){
document.write(arr[i].value+"<br>");
}
</script>
No.2
- 回答日時:
この場合 new Array() は {} で十分です。
#本来の意図では [] かな???
それから、ハッシュは仕様上キーの順序を保証しないので
それを当てにしたプログラムを作ってはいけません。
IEや FireFoxでは大丈夫みたいですが、
いつか駄目になっても文句は言えません。
#Arrayはちょっと特殊なハッシュです。
順序は添え字に数字を使った配列などを使って管理するのが
よいと思います。
No.1
- 回答日時:
デリーとして追加してみては?
delete(myArray["A001"]["B002"]["C001"]);
myArray["A001"]["B002"]["C001"] = "C001";
この回答への補足
回答ありがとうございます。
でも、すみません、省略しすぎて伝え切れなかったです。
本来は下記のように配列が複数存在します。
要素が2つなら delete できますが、要素が複数なため使えないと認識しています。
---------------------------------------------------------------------
myArray["A001"]["B002"] = new Array();
myArray["A001"]["B002"]["C001"] = "C001";
myArray["A001"]["B002"]["C002"] = "C002";
myArray["A001"]["B002"]["C003"] = "C003";
myArray["A001"]["B002"]["C004"] = "C004";
myArray["A001"]["B002"]["C005"] = "C005";
※入れ替え後↓
myArray["A001"]["B002"] = new Array();
myArray["A001"]["B002"]["C001"] = "C001";
myArray["A001"]["B002"]["C003"] = "C003"; ←格納順序が
myArray["A001"]["B002"]["C002"] = "C002"; 入れ替わった
myArray["A001"]["B002"]["C004"] = "C004";
myArray["A001"]["B002"]["C005"] = "C005";
---------------------------------------------------------------------
あとこれも悩んでる1つ原因なんですが、
入れ替える際、持っている情報は、下記の様な
「目当ての配列までのキーを "-" で繋いだ String 」です。
var irekae1 = "A001-B002-C002";
var irekae2 = "A001-B002-C003";
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
これで何故震えるのか、とても...
-
jspからjavascriptの変数引継ぎ
-
二次元配列を使って順位をだす...
-
HTML Javascript(配列)に関し...
-
空の配列に2次元配列の追加
-
食材の期限を管理するためにGAS...
-
関数でy=g(x)のgとは何の略です...
-
ジェネレーターの作り方
-
idを使わずにonclickで自身の要...
-
このプログラムに、王手をかけ...
-
翌月を取得するGASが分かりません
-
innerHTML実行後のイベント
-
document.writeで画面が消える
-
document.write()の()内にタグ...
-
オブジェクトの有無を判定
-
jquaryでsettimeは
-
Coinmarketcap api
-
URLのパラメータを取得しリンク...
-
for文のiを使ってリンク先のア...
-
VBAのIE操作でframe構造のサイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
C#テキストボックスの文字を配...
-
jspからjavascriptの変数引継ぎ
-
javascript 変数名の連結をしたい
-
undefinedを表示させない方法は...
-
二次元配列を使って順位をだす...
-
JavaScriptで簡単なクイズを作...
-
JavaScriptにおける[] とか :...
-
JSONデータを50音順でソートしたい
-
助けてください‼︎ javascriptで...
-
jQueryで文字数カウンタ(複数...
-
JavaScriptでの動的な多次元配...
-
HTMLで誕生石と星座をアラート...
-
ページ内のみの検索窓(?)
-
どうすればresponseText結果を...
-
javascriptで行を抽出したいです。
-
配列を作って総当たりで距離を...
-
フォーム入力値の重複チェック
-
ソートで
-
順列生成アルゴリズムについて...
おすすめ情報