Javascript 如何从角度视图中的嵌套对象筛选结果

Javascript 如何从角度视图中的嵌套对象筛选结果,javascript,angularjs,Javascript,Angularjs,我有嵌套的对象在我的角度像这样 { "name": "John" "age" : "23" subjects: [ { "description":"Math" "length":"1 month" }, { "description":"English" "length":"1 month" } ] } 在angular中,过滤器可以很好地处理名称、年龄,但是我如何才能找到那些主题描述中包含数学的学生呢?不确定这是否真的是一个角度问题-您需要一种方法来解析javascript中的

我有嵌套的对象在我的角度像这样

{
"name": "John"
"age" : "23"
subjects: [

{
"description":"Math"
"length":"1 month"
},
{
"description":"English"
"length":"1 month"
}


]



}

在angular中,过滤器可以很好地处理名称、年龄,但是我如何才能找到那些主题描述中包含数学的学生呢?不确定这是否真的是一个角度问题-您需要一种方法来解析javascript中的原始json数据

一种方法是使用类似下划线的函数库,它提供类似函数的实用程序来执行此类操作

请参阅以获取示例,并查看有关下划线的文档

var studentsDoingMaths = _.filter(json, function (student) {
var doingMaths = doingSubject("Math");
return subjectSearch(student, doingMaths);});
上的文档页面有一个有趣的示例

其中,搜索框的ng型号设置为search.$,而不是search。这似乎是一个匹配的外卡

这是给你的礼物。在搜索框中键入任何内容,它将找到匹配的学生

<input id="txtSearch" type="text" ng-model="search.$" />
<ol>
    <li ng-repeat="student in myData | filter:search">
        {{student.name}}
        {{student.subjects}}
    </li>
</ol>

如果要对任何属性进行筛选,则该选项都有效。但如果你只想过滤一个特定的属性,比如主题描述,你会怎么做呢?
$scope.myData = [{
    "name": "Student 1",
        "age": "20",
    subjects: [{
        "description": "Math",
            "length": "1 month"
    }, {
        "description": "English",
            "length": "1 month"
    }]
}, {
    "name": "Student 2",
        "age": "22",
    subjects: [{
        "description": "Economics",
            "length": "1 month"
    }, {
        "description": "English",
            "length": "3 months"
    }]
}, {
    "name": "Student 3",
        "age": "23",
    subjects: [{
        "description": "Math",
            "length": "4 months"
    }, {
        "description": "English",
            "length": "6 months"
    }]
}];