0

这可能是一个非常简单的问题,但假设我有一个这种形式的 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) 的孩子的名字的合成器是什么?

谢谢

4

4 回答 4

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)将返回“马修”

希望有帮助,

R。

于 2013-08-19T16:18:24.333 回答
0

你可以这样做:

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

JSFiddle 可在此处获得

于 2013-08-19T16:07:58.800 回答
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 的每个元素执行线性搜索。然而,可能有更好的解决方案:)。

于 2013-08-19T16:17:39.577 回答
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 都是唯一的。

于 2013-08-19T16:29:34.747 回答