2012-01-15 11 views
1

私はこのJSのオブジェクトがあります( "コメント": "テキスト")をループJSオブジェクト

{ 
    "data": { 
     "nid": [{ 
      "cid": "32", 
      "uid": "780", 
      "comment": "text" 
     }] 
    }, 
    "request_status": "found" 
} 

どのようにこれらの項目を通じてIループを取得することができますコメント値を?

+1

は、なぜあなたがしたいですかそれをループするには? 'object.data.nid [0] .comment' – JohnP

答えて

3

実際にループする必要はありません。ただ、やる...

var obj = {"data":{"nid":[{"cid":"32","uid":"780","comment":"text"}]},"request_status":"found"}; 

var text = obj.data.nid[0].comment; 

または複数が存在する場合、あなたはforEach ...

obj.data.nid.forEach(function(val,i) { 
    alert(val.comment); 
}); 

や伝統的なforループ...

for(var i = 0; i < obj.data.nid.length; i++) { 
    alert(obj.data.nid[i].comment); 
} 

を使用することができます

または、配列を作成する場合は、を使用します...

var arr = obj.data.nid.map(function(val,i) { 
    return val.comment; 
}); 

か、再度、伝統的なforループ...

var arr = [] 
for(var i = 0; i < obj.data.nid.length; i++) { 
    arr.push(obj.data.nid[i].comment); 
} 
+0

に感謝しますが、nidがnumberに変更された場合は、直接取得できますか? { "データ":{ "1222":[{ "CID": "32"、 "UID": "780"、 "コメント": "テキスト" }] }、 " request_status ":" found " } – Laky

+1

@Laky:' obj.data.nid'を 'obj.data [1222]'に変更します。それとも、あなたはそれが違う数、あるいは複数の数字のセットかもしれないと言っていますか? –

1

ちょうどその特定のオブジェクトを参照する(または、使用しているすべてのオブジェクトが同じパターンに従っている場合している場合)、その後、あなただけの値を直接アクセスすることができます。

var theObj = {"data":{"nid":[{"cid":"32","uid":"780","comment":"text"}]},"request_status":"found"}; 
alert(theObj.data.nid[0].comment); 

あなたが繰り返し何かをしたい場合は、おそらくこれを試してみてください。

var theObj = {"data":{"nid":[{"cid":"32","uid":"780","comment":"text"}]},"request_status":"found"}; 
for (var index = 0; index < theObj.data.nid.length; index++) { 
    var item = theObj.data.nid[index]; 
    if (item.comment) { 
     alert(item.comment); 
    } 
} 

それとも、本当に繰り返し全体事行いたい場合:

window.searchObj = function(theObj) { 
    if (theObj.comment) { 
     alert(theObj.comment); 
    } 
    if (theObj instanceof Array) { 
     searchArray (theObj); 
    } 
    else if (theObj instanceof Object) { 
     for (var key in theObj) { 
      searchObj(theObj[key]); 
     } 
    } 
}; 

window.searchArray = function(theArray) { 
    for (var index = 0; index < theArray.length; index++) { 
     var item = theArray[index]; 
     searchObj(item); 
    } 
}; 

var theObj = {"data":{"nid":[{"cid":"32","uid":"780","comment":"text"}]},"request_status":"found"}; 
searchObj(theObj); 
1

を考える:

var obj = { 
    "data": { 
     "nid": [{ 
      "cid": "32", 
      "uid": "780", 
      "comment": "text" 
     }] 
    }, 
    "request_status": "found" 
}; 

コメントを取得するための直接的な方法は次のとおりです。

obj["data"]["nid"][0]["comment"] 
// or 
obj.data.nid[0].comment 

「ループ」するまで値を取得するための項目、私はループが意味をなさないか分からない。あなたはオブジェクトの構造を知らないかもしれないが、どこかに「コメント」フィールドがあることを知っていると言っていますか?

「NID」配列を有するだけで1つの項目でも - これは単なるサンプルでしたが、本当にあなたは、複数の値を持つ配列を持っているだろう場合のことができ、その配列をループ:

var nid = obj["data"]["nid"], // get a direct reference to the array to save 
    i;      // repeating obj.data.nid everywhere 
for (i=0; i < nid.length; i++) { 
    // do something with the comment in the current item 
    console.log(nid[i]["comment"]); 
}