在树状的angularjs模型中检索对象

retrieving an object in a tree-like angularjs model

本文关键字:检索 对象 模型 angularjs      更新时间:2023-09-26

下面是一个示例模型:

$scope.people=
   [
{"id":1, "name":"bob", "pets":[
    {"id":1, "name":"Jaco", "type":"parrot"},
    {"id":2, "name":"coco", "type":"parrot"},
    {"id":3, "name":"pluto", "type":"dog"}
    ]},
{"id":2, "name": "jason", "pets":[
    {"id":4, "name":"coco", "type":"cat"}
]},
{"id":3, "name": "kurt", "pets":[
     {"id":5, "name":"nemo", "type":"turtle"},
     {"id":6, "name":"grnx", "type":"lynx"}
]}
];
是否有angularjs/javascript函数或最佳实践来检索bob的id,或找到动物的主人,或提取一个宠物记录与键/值模式?

我想我可以编写自己的函数来查看模型(递归或for循环),但如果存在的话,我宁愿使用更高级的方法。

您会发现有各种查询JS数据结构的选项。我发现linq.js非常出色。你的每个例子都可以用一行linq.js代码完成。

//Get Id
return Enumerable.From($scope.people).First('$.name == "' + name + '"' ).id;            
//Pet owners
return Enumerable.From($scope.people).Where('$.pets.length > 0').Select("$.name").ToArray();            
//Pet Search
return Enumerable.From($scope.people).SelectMany('$.pets').Where('$.' + key + ' == "' + value + '"').Select('$.name').ToArray()