调用javascript对象属性

时间:2013-08-19 16:06:08

标签: javascript jquery javascript-objects

这可能是一个非常简单的问题,但是假设我有一个这种形式的php json_encoded javascript对象:

var js_objet = {
    "1": {
        "Users": {
            "id": "14",
            "name": "Peter"
         }, 
         "Children": [
             {
                 id: 17, 
                 name: "Paul"
             }, 
             {
                 id: 18, 
                 name: "Mathew"
             }
        ]
      }    
    }

从该对象获取id为18(Mathew)的孩子名称的synthax是什么?

谢谢

4 个答案:

答案 0 :(得分:1)

这是如前所述的自定义功能。

function getChildrenById(id){
    for (var child in js_objet[1].Children){
        if(id == js_objet[1].Children[child].id){
            return js_objet[1].Children[child].name;
        }
    }
    return false;
}

运行getChildrenById(18)将返回“Mathew”

希望有所帮助,

R上。

答案 1 :(得分:0)

你可以这样做:

var name = js_objet["1"].Children[1].name;

JSFiddle available here

答案 2 :(得分:0)

这就是我如何处理这个问题:

var id = 18;
var name = '';
var jsObjIndex = "1";
var jsObjAttr = "Children"
for (var i = 0; i < js_objet[jsObjIndex][jsObjAttr].length; i++)
{
    if (js_objet[jsObjIndex][jsObjAttr][i].id == id)
    {
        name = js_objet[jsObjIndex][jsObjAttr][i].name;
        break;
    }
}

您基本上是对jsObjIndex.Children的每个元素执行线性搜索。然而,可能有更好的解决方案:)。

答案 3 :(得分:0)

这真的是一个评论,但我没有足够的声誉(但它与我最近遇到同样的问题有关):如果您可以更改JSON格式以使用ID作为每个子对象的键:

var js_objet = {
"1": {
    "Users": {
        "id": "14",
        "name": "Peter"
     }, 
     "Children": {
         "17":{ 
             "name": "Paul"
         }, 
         "18":{
             "name": "Mathew"
         }
    }
  }    
}

然后您可以使用

简单地调用它
js_objet[1].Children[18].name;

这假设每个ID都是唯一的。