Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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数组中基于多属性的过滤_Javascript_Arrays_Underscore.js - Fatal编程技术网

javascript数组中基于多属性的过滤

javascript数组中基于多属性的过滤,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我有一个具有多个属性的对象数组。我需要根据许多属性过滤数组。让我们说一下,所有的物体的名字都是“约翰”,住在“印度”和“30”岁 我通过在每次筛选后放置&&条件来完成此操作,但我计划在我的项目中使用下划线.js。请告诉我下划线.js是否可以帮助我以更优雅的方式书写 Json数据: { "recordsTotal": 5, "recordsFiltered": 5, "aaData": [ { "firstname": "John", "

我有一个具有多个属性的对象数组。我需要根据许多属性过滤数组。让我们说一下,所有的物体的名字都是“约翰”,住在“印度”和“30”岁

我通过在每次筛选后放置
&&
条件来完成此操作,但我计划在我的项目中使用下划线.js。请告诉我下划线.js是否可以帮助我以更优雅的方式书写

Json数据:

  {
    "recordsTotal": 5,
    "recordsFiltered": 5,
    "aaData": [
    {
      "firstname": "John",
      "lastname": "Kumar",
      "city": "Dhaka",
      "country": "Bangladesh",
      "age": "30"
    },
    {
      "firstname": "John",
       "lastname": "Wells",
       "city": "Katmandu",
       "country": "Nepal",
       "age": "28"
    },
    {
       "firstname": "Praveen",
       "lastname": "Garg",
       "city": "columbo",
       "country": "Srilanka",
       "age": "40"
    },
    {
        "firstname": "Joe",
        "lastname": "Wells",
        "city": "Luton",
        "country": "UK",
        "age": "12"
    },
    {
        "firstname": "Rita",
        "lastname": "Wahlin",
        "city": "houston",
        "country": "USA",
        "age": "28"
    }
  ] 
}

有一个函数u.filter,它允许您将集合的每个元素传递给函数,以测试是否将其包含在返回的筛选列表中

所以我想你需要这样的东西:

var filtered = _filter(data.aaData, function(item) {
  return (item.firstname == 'John') && (item.country == 'India') && (age == '30'); 
})

请参见:

查看下划线的过滤方法,您可以将其传递到对象列表中,并为对象的每个字段任意指定约束:

var filtered = _.filter(data, function(item){
   return item.firstname == "John" && item.country == "India" && item.age == 30;
});
或者,如果您有一个用户可定义的过滤器列表,您可以:

var filters = {
    "firstname":"John",
    "country":"India",
    "age":"30"
}
var filtered = _.filter(data, function(item){
   for(filter in filters){
       if(item[filter] != filters[filter]){ return false;}
   }
   return true;
});
试试这个

它是一个快速正则表达式,除了jQuery之外,不需要包含额外的js文件

var result = $.grep(xx.aaData, function (e) { return e.firstname == 'john' && e.country == 'india' && e.age == '30'; });
其中xx是您的主要json对象