【问题标题】:filtering array based on key and value基于键和值的过滤数组
【发布时间】:2014-12-12 07:03:52
【问题描述】:

我有一个以下格式的数组,我需要根据键和值进行过滤。我打算为此使用 Underscore.js。我尝试使用以下代码,但它搜索所有字段值,但我需要根据键和值而不是所有键进行搜索。如何为此使用下划线?

请告诉我。

var sortedArray = _.sortBy(_.filter(arr, function (obj) {
                      return _.values(obj).some(function (el) {
                          return (typeof el ==="string" && el.match(new RegExp(searchStr, "i")));
                       });
                      }), function (obj){
                            return obj[colName];
                    });
}


{
  "recordsTotal": 5,
  "recordsFiltered": 5,
  "aaData": [
  {
    "firstname": "Pradeep",
    "lastname": "Kumar",
    "city": "Bangalore",
    "country": "India"
  },
  {
    "firstname": "John",
    "lastname": "Wells",
    "city": "Calcutta",
    "country": "India"
  },
  {
    "firstname": "Praveen",
    "lastname": "Garg",
    "city": "columbo",
    "country": "Srilanka"
  },
  {
    "firstname": "Joe",
    "lastname": "Wells",
    "city": "Luton",
    "country": "UK"
  },
  {
    "firstname": "Rita",
    "lastname": "Wahlin",
    "city": "houston",
    "country": "USA"
   }
 ] 
}

【问题讨论】:

  • 请清楚显示示例输入和预期输出
  • 请至少把代码弄到可以解析的程度?
  • 如果没有正确的输入和输出期望,就无法理解您想要什么。

标签: javascript arrays underscore.js


【解决方案1】:

抱歉,如果我无法正确发布问题。我找到了一个解决方案,并且正在使用以下代码。

    var searchColData=function(arr, searchStr, colName){
       var sortedArray = _.filter(arr, function (obj) {
                       return (_.property(colName)(obj).toString().match(new RegExp(searchStr, "i")));
                      });

    return sortedArray;

}

希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2016-11-03
    • 2019-10-14
    • 2020-12-11
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多