
javascriptで復数の配列をJson形式にまとめたい
ms = "ガンダム,ガンキャノン,ガンタンク,シャアザク,グフ";
pilot = "アムロ,カイ,ハヤト,シャア,ラル"
cost = "100,70,60,90,90";
↑カンマ区切りのデータを配列化してそれぞれ変数に入っています。
これらを以下の形式(json)にして、testdataに取り込みたいのですが、
識者の方々がいつも行われる手法、ベストと思われる手法を伺いたいです。
var testdata =
{"ms":"ガンダム", "pilot":"アムロ", "cost":"100"},
{"ms":"ガンキャノン", "pilot":"カイ", "cost":"70"},
.
.
.
.
;
}
純粋なjavascriptよりは、
jQueryベースの記述の方が個人的には理解し易いです。
どうぞよろしくお願いします。
No.3ベストアンサー
- 回答日時:
愚直にやるなら
var msdata = (function(){
var temp = [ms.split(/,/), pilot.split(/,/), cost.split(/,/)];
var o = {}, n = temp[0].length;
for (var i = 0; i < n; i++) {
var m = temp[0][i].trim();
var p = temp[1][i].trim();
var c = temp[2][i].trim();
o[m] = { pilot:p, cost:c };
}
return o;
})();
本格的にやるなら、以下のようなライブラリを利用することになります。
https://www.google.co.jp/search?q=csonv.js
ありがとうございます!
3つの変数を配列化して、tempに格納。
オブジェクト、oを定義。
変数msの数を取得。
その数分ループして、都度m、p、cの変数に格納し、
最後にオブジェクトoにまとめる。
という感じだと思うのですが、
とてもこれを書くスキルは自分にはありませんでした。
あらためて解析して、把握します。
この度は終始ご丁寧な対応を賜り、本当にありがとうございました。
大変為になりました。
No.2
- 回答日時:
あ、配列をJSON形式にする方法のベストですか。
なるほど質問を誤認していました。…が、それは最初の一回しか行わない処理ですし、ベストとか考える必要は無く普通にループで格納するだけでいいと思いますよ。この回答への補足
お付き合いありがとうございます!
意図も理解いただき感謝です。
> 普通にループで格納するだけ
というのは、今回の例で言えば具体的にはどんな記述でしょうか。
調べ方が下手で情けないのですが、
既にJson形式になったものからの説明が多くて、詰まっております。
参考になるページでも構いませんので、ご教授いただけますと大変ありがたいです。
No.1
- 回答日時:
そもそも本来はデータというのは、どのように使うかによって表現方法を変えるべきです。
しかしこの質問ではどのように使うか説明がないので、ベストな方法はこの状況では誰にも分からないと思いますよ。ただいまの情報の中で私が使用する方法を想像して補った上で、データ構造を考えるとすれば以下のようにします。
var msdata = {
ガンダム : {"pilot":"アムロ", "cost":"100"},
ガンキャノン : {"pilot":"カイ", "cost":"70"}
};
配列にしてしまうとデータの特定・取り出しに、以下のような原始的で回りくどい方法をとらねばなりませんが、
for (var i = 0; i < testdata.length; i++) {
if (testdata[i].ms == "ガンダム") {
alert(testdata[i].pilot);
break;
}
}
上記のデータ構造なら、以下のようにシンプル・スマート・高速にデータを取り出すことができます。
alert(msdata["ガンダム"].pilot);
この回答への補足
アドバイスありがとうございます!
そして説明不足で本当に申し訳ありません。
経緯としては、
カンマ区切りのデータが復数あって、それらをいろいろと扱う際に
いったんJson形式で取りまとめておけば、使い回す際にラクな状況でして、
その為のよりよい手法をお尋ねした次第です。
伺いたいのは、上記の配列(3個)から
ご提示いただいたような
var msdata = {
ガンダム : {"pilot":"アムロ", "cost":"100"},
ガンキャノン : {"pilot":"カイ", "cost":"70"}
};
この形を作るための方法です。
Json形式にすれば取り出す方法もわかるのですが、
その前段階にあたる「Json形式にする方法」で悩み中です。
msdataに
ガンダム : {"pilot":"アムロ", "cost":"100"},
ガンキャノン : {"pilot":"カイ", "cost":"70"}
が入っている状態を作る為の方法を知りたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jspからjavascriptの変数引継ぎ
-
jQuery text()で、<br>タグも取...
-
同じIDで定義した要素の配列を...
-
助けてください‼︎ javascriptで...
-
空の配列に2次元配列の追加
-
JavaScriptでテーブル内?に矢...
-
イラレでナンバリングする方法
-
HTTPSのとき":"が"%3A"ではなく...
-
画像のURLをコピーするブックマ...
-
JavaScript window.openで開く...
-
functionから別のfunctionを実...
-
XMLでのAttributeを持ったNode...
-
idを使わずにonclickで自身の要...
-
javaで画像をランダム表示しつ...
-
javascriptで入力フォームに日...
-
$("body").height();と$("body"...
-
VSCODE[Python]の設定について
-
onchangeイベントを使ってspan...
-
XMLHttpRequestでキャッシュを...
-
JavaScriptとHTMLの課題です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
C#テキストボックスの文字を配...
-
undefinedを表示させない方法は...
-
雪を降らせるみたいな、ゆらゆ...
-
JavaScriptで簡単なクイズを作...
-
1から20までの整数から、重複な...
-
javascriptで行を抽出したいです。
-
Perlの配列をJavaScriptに渡せ...
-
javascript 変数名の連結をしたい
-
jQueryで文字数カウンタ(複数...
-
配列データの利用方法
-
時計を複数表示する場合
-
("Scripting.Dictionary")につ...
-
順列生成アルゴリズムについて...
-
配列の数ではなく、文字列の長...
-
JSONデータを50音順でソートしたい
-
JavaScriptにおける[] とか :...
-
総当りの配列を返す関数の作成
-
java keyを配列で表記したい
おすすめ情報