重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

javascriptで復数の配列をJson形式にまとめたい

ms = "ガンダム,ガンキャノン,ガンタンク,シャアザク,グフ";
pilot = "アムロ,カイ,ハヤト,シャア,ラル"
cost = "100,70,60,90,90";

↑カンマ区切りのデータを配列化してそれぞれ変数に入っています。

これらを以下の形式(json)にして、testdataに取り込みたいのですが、
識者の方々がいつも行われる手法、ベストと思われる手法を伺いたいです。

var testdata =
{"ms":"ガンダム", "pilot":"アムロ", "cost":"100"},
{"ms":"ガンキャノン", "pilot":"カイ", "cost":"70"},
           .
           .
           .
           .
;
}

純粋なjavascriptよりは、
jQueryベースの記述の方が個人的には理解し易いです。

どうぞよろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございます!

3つの変数を配列化して、tempに格納。
オブジェクト、oを定義。
変数msの数を取得。
その数分ループして、都度m、p、cの変数に格納し、
最後にオブジェクトoにまとめる。

という感じだと思うのですが、
とてもこれを書くスキルは自分にはありませんでした。
あらためて解析して、把握します。

この度は終始ご丁寧な対応を賜り、本当にありがとうございました。
大変為になりました。

お礼日時:2014/03/26 21:57

あ、配列をJSON形式にする方法のベストですか。

なるほど質問を誤認していました。…が、それは最初の一回しか行わない処理ですし、ベストとか考える必要は無く普通にループで格納するだけでいいと思いますよ。

この回答への補足

お付き合いありがとうございます!
意図も理解いただき感謝です。

> 普通にループで格納するだけ
というのは、今回の例で言えば具体的にはどんな記述でしょうか。

調べ方が下手で情けないのですが、
既にJson形式になったものからの説明が多くて、詰まっております。
参考になるページでも構いませんので、ご教授いただけますと大変ありがたいです。

補足日時:2014/03/25 21:49
    • good
    • 0

そもそも本来はデータというのは、どのように使うかによって表現方法を変えるべきです。

しかしこの質問ではどのように使うか説明がないので、ベストな方法はこの状況では誰にも分からないと思いますよ。

ただいまの情報の中で私が使用する方法を想像して補った上で、データ構造を考えるとすれば以下のようにします。

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"}
が入っている状態を作る為の方法を知りたいです。

補足日時:2014/03/25 20:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!