【问题标题】:Javascript find keys for the matched values as like query in SQLJavascript 查找匹配值的键,就像 SQL 中的查询一样
【发布时间】:2016-03-25 10:04:17
【问题描述】:

我想使用 JavaScript 来查找匹配值的键,就像 SQL 中的查询一样。 假设我有以下 json 数据:

{"100":"Jaipur","101":"Delhi","102":"Raipur","104":"Goa"}

如果输入:

"pur"

输出应该是:

{"100":"Jaipur","102":"Raipur"}

提前致谢。

【问题讨论】:

    标签: javascript json search key-value sql-like


    【解决方案1】:

    使用for-in 循环遍历object。如果目标字符串中indexOf搜索到的字符串大于-1,则该字符串中存在搜索值。

    试试这个:

    var input = {
      "100": "Jaipur",
      "101": "Delhi",
      "102": "Raipur",
      "104": "Goa"
    };
    var needle = "pur";
    var op = {};
    for (var i in input) {
      if (input[i].indexOf(needle) > -1) {
        op[i] = input[i];
      }
    }
    console.log(op);
    <script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

    【讨论】:

      【解决方案2】:

      我写了一个小函数,也许对你有帮助

      var data = {"100":"Jaipur","101":"Delhi","102":"Raipur","104":"Goa"};
      
      function search(data, text){
        var items = {};
         for(var i in data){
           if(data.hasOwnProperty(i) && data[i].indexOf(text) !== -1){
             items[i] = data[i];
           }
         }
         return items;
       }
      
       console.log(search(data, 'pur'));
      

      在小提琴中尝试一下:https://jsfiddle.net/oe9kc8ne/

      【讨论】:

        【解决方案3】:

        您可以使用Array#forEach 遍历对象的键并执行String#match,如果找到,则将属性添加到结果对象。

        var data = {"100":"Jaipur","101":"Delhi","102":"Raipur","104":"Goa"},
            result = function (data, search) {
                var r = {};
                Object.keys(data).forEach(function (k) {
                    if (data[k].match(search)) {
                        r[k] = data[k];
                    }
                });
                return r;
            }(data, 'pur');
        
        document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-13
          • 2015-10-09
          • 1970-01-01
          • 2020-01-15
          • 1970-01-01
          • 1970-01-01
          • 2010-09-13
          • 2021-05-31
          相关资源
          最近更新 更多