アプリ版:「スタンプのみでお礼する」機能のリリースについて

JSON形式で受け取った2次元配列をHTMLに書き出そうとしています。
配列を指定するカラム名?を変数にしたいのですがうまくできません。

var hoge = "abc";
var len = result.length;

for (i = 0; i < len; i++){
 objResult.append("<li><a href=" + result[i].ID + ">" + result[i].hoge + "</a></li>");
}

※objResultはul要素を変数に収めたものです。

JSONデータは1列目のカラム名は『ID』で固定ですが2列目は変動する為、上記の『hoge』の部分にはJSONデータを受け取る前にカラム名を別処理で取得して格納しています。

ご教授の程よろしくお願いします。

A 回答 (2件)

こんにちは。



>『hoge』が変数として認識されず
hogeがkeyの文字列なら、以下の例のような指定方法でためしてみてください。

>column』の部分は変動する為、~~値は別の処理で取得することができます
対象オブジェクトから直接そのkeyも取得できますよ。


<参考例>
var jsonData = [{"ID":"1","hoge":"aaa"},{"ID":"2","fuga":"bbb"}];

var i, j, k, data = "";
for(i = 0; j = jsonData[i++];){
 for(k in j) data += "[ " + k + " : " + j[k] + " ] ";
 data += "\n";
}
alert(data);
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
なるほど!と唸ってしまいました…For文をネストして取り出すのですね。
少し改造しましたが希望通りの値を得ることができました。
本当にありがとうございました。

お礼日時:2014/05/14 15:23

質問の趣旨がいまいちわかりかねますが、文字列を使ってプロパティにアクセスするだけなら


こんな感じでいけるかもしれません。

<script>
var obj=[{"hoge":1,"fuga":"abc"},{"hoge":2,"fuga":"def"},{"hoge":3,"fuga":"xyz"}];
var xxx="fuga";
document.write(getProperty(obj[0],xxx));

function getProperty(obj,propertyName){
if((typeof obj).toUpperCase()!="OBJECT") return false;
for(var i in obj){
if(i==propertyName) return obj[i];
}
return null;
}
</script>

この回答への補足

わかりにくくてすみません><

var jsonData = [{"ID":"1","colum":"aaa"},{"ID":"2","colum":"bbb"}];

というJSON形式のデータがあります。
上記でいうと『colum』の部分が変動します。
もし変動しなければ、

var len = jsonData.length;
for(i = 0; i < len; i++){
 $("ul").append("<li>" + jsonData[i].ID + jsonData[i].column + "</li>");
}

で、希望通りの形ができます。
しかし、『column』の部分は変動する為、以下のように変数にしたいと思っています。(値は別の処理で取得することができます。)

var columnName = hoge;
var len = jsonData.length;
for(i = 0; i < len; i++){
 $("ul").append("<li>" + jsonData[i].ID + jsonData[i].hoge + "</li>");
}

上記の形では『hoge』が変数として認識されず、undefinedになってしまいます。
PHPでは、

array[0][1]

のような形で多次元配列にアクセスできる方法があったと思うのですが、JQUERYには同様の方法はないのでしょうか?もしくは上記の『hoge』を変数として認識させる方法はありますか?

補足日時:2014/05/12 14:26
    • good
    • 0
この回答へのお礼

言葉足らずな質問でわかり辛くすみませんでした。
アドバイス頂きありがとうございました。
今回は他の方法にて実現しました。
また機会がございましたらよろしくお願いします。

お礼日時:2014/05/14 15:20

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