【问题标题】:Filter array based on dynamic parameter基于动态参数的过滤器数组
【发布时间】:2017-05-04 19:00:13
【问题描述】:

假设我有一个 json 对象数组,如下所示:

var codes = [{
            "code_id": "1",
            "code_name": "code 1",            ,
             }, {
            "code_id": "2",
            "code_name": "code889",

             },
        // ... () ...    
             ]

如何根据动态输入参数过滤代码数组?

所以我正在寻找一个通用函数,它将输入数组、键和值作为 i/p。

var filteredCodes = getFilteredCodes(codes, "code_id", 2);

谢谢。

【问题讨论】:

    标签: javascript arrays javascript-objects


    【解决方案1】:

    使用Array.prototype.filter 过滤掉结果 - 参见下面的演示:

    var codes = [{"code_id": "1","code_name": "code 1"}, {"code_id": "2","code_name": "code889"}];
    
    function getFilteredCodes(array, key, value) {
      return array.filter(function(e) {
        return e[key] == value;
      });
    }
    
    var filteredCodes = getFilteredCodes(codes, "code_id", 2);
    
    console.log(filteredCodes);

    【讨论】:

      【解决方案2】:

      您可以将Array#filter 与键和值一起使用。

      function getFilteredCodes(array, key, value) {
          return array.filter(function (o) {
              return o[key] === value;
          });
      }
      
      var codes = [{ "code_id": "1", "code_name": "code 1", }, { "code_id": "2", "code_name": "code889" }],
          filteredCodes = getFilteredCodes(codes, "code_id", "2");
      
      console.log(filteredCodes);

      【讨论】:

        【解决方案3】:
        function getFilteredCodes(poolArray,key,val){
            return poolArray.filter(function(item,ind){
                return item[key]==val;
            });
        }
        

        【讨论】:

          【解决方案4】:

          或者函数在唯一的一行中用箭头表示法

          var codes = [{ "code_id": "1", "code_name": "code 1", }, { "code_id": "2", "code_name": "code889" }];
          var getFilteredCodes = (array, key, value) => array.filter(x => x[key] === value);
          var FilteredCodes = getFilteredCodes(codes, "code_id", "2");
          console.log(FilteredCodes);

          【讨论】:

            猜你喜欢
            • 2023-03-04
            • 1970-01-01
            • 2015-01-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-09-13
            • 2017-09-08
            相关资源
            最近更新 更多