调用javascript对象属性

call javascript object properties

本文关键字:属性 对象 javascript 调用      更新时间:2023-09-26

这可能是一个非常简单的问题,但假设我有一个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是什么?

感谢

这里有一个前面提到的自定义函数。

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。

你可以这样做:

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

JSFiddle在这里可用

这就是我处理这个问题的方法:

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的每个元素执行线性搜索。不过,可能有更好的解决方案:)。

这确实是一个注释,但我没有足够的信誉(但这与我最近遇到的相同问题有关):如果您可以更改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都是唯一的。