Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据动态生成的查询过滤json?_Javascript_Angularjs_Json - Fatal编程技术网

Javascript 如何根据动态生成的查询过滤json?

Javascript 如何根据动态生成的查询过滤json?,javascript,angularjs,json,Javascript,Angularjs,Json,我想使用js为角度项目过滤json对象。 Json结构如下所示: { "docs": [ { "Firstname": "", "Lastname": "", "Birthdate": "", "city": "", "country": "" }, { "Firstname": "", "Lastname": "", "Birthdate": "", "city": "", "country": "" } ] } 查询生成器类似于 可以使用查询生成器

我想使用js为角度项目过滤json对象。 Json结构如下所示:

{
 "docs": [
{
  "Firstname": "",
  "Lastname": "",
  "Birthdate": "",
  "city": "",
  "country": ""
},
{
  "Firstname": "",
  "Lastname": "",
  "Birthdate": "",
  "city": "",
  "country": ""
}
]
}
查询生成器类似于

可以使用查询生成器生成的示例查询如下所示:

(Firstname = tom OR (Firstname = jerry AND Lastname = jack))
基于此查询,Js函数应该过滤json对象并控制台生成的json


已经看过用于筛选的自定义函数,但不知道如何根据生成的查询创建动态筛选函数。

您可以使用自定义筛选器(如果不想使用查询生成器)根据FirstName和LastName筛选出所有值

函数MyCtrl($scope){
$scope.people={
“文件”:[
{
“名字”:“汤姆”,
“姓氏”:“拉里”,
“出生日期”:“,
“城市”:“,
“国家”:”
},
{
“名字”:“杰瑞”,
“姓氏”:“杰克”,
“出生日期”:“,
“城市”:“,
“国家”:”
},
{
“名字”:“汤姆”,
“姓氏”:“托马斯”,
“出生日期”:“,
“城市”:“,
“国家”:”
},
{
“名字”:“杰瑞”,
“姓氏”:“盖尔”,
“出生日期”:“,
“城市”:“,
“国家”:”
}
]
}
$scope.myFilter=函数(项){
如果((item.Firstname==“Tom”)| |(item.Firstname==“jerry”&&item.Lastname==“jack”)){
返回true;
}
};
}

  • {{person.Firstname}{{person.Lastname}}

您可以使用一个对象,它反映了条件及其分组之间的关系

给定条件的示例

(Firstname = tom OR (Firstname = jerry AND Lastname = jack))
以对象作为谓词

{
    type: 'group',
    operator: 'OR', 
    conditions: [
        {
            type: 'expression',
            key: 'Firstname',
            value: 'tom',
            comparison: '='
        },
        {
            type: 'group',
            operator: 'AND',
            conditions: [
                {
                    type: 'expression',
                    key: 'Firstname',
                    value: 'jerry',
                    comparison: '='
                },
                {
                    type: 'expression',
                    key: 'Firstname',
                    value: 'jack',
                    comparison: 'jack'
                },
            ]
        }
    ]
}

那么你试过什么?也许试着阅读文档?是否要筛选
“文档”
数组?如果是这样,那么您可以简单地使用JavaScript的数组过滤器函数。但是,也许您还需要向我们展示您所做的尝试以及遇到的错误/问题。@Marv,我只是在寻找一些可以用于根据生成的查询字符串构建自定义筛选函数的方法。对于预定义的查询。这就够了。但是在anular querry builder中动态生成的查询呢?如何实现动态过滤?我不知道一个查询生成器,但从您的问题来看,查询(Firstname=tom或(Firstname=jerry和Lastname=jack))感觉像是预先确定的,实际上这是一个示例查询,可以使用查询生成器生成。