Javascript 查找匹配值的键,就像 SQL 中的查询一样

Javascript find keys for the matched values as like query in SQL

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

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

如果输入:

"pur"

输出应该是:

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

提前致谢。

使用 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>

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

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'));

在 fiddle 试试:https://jsfiddle.net/oe9kc8ne/

您可以使用 Array#forEach over the keys of the object and perform a 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>');