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

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

本文关键字:查询 一样 SQL 就像 查找 Javascript      更新时间:2023-09-26

我想使用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'));

试试小提琴:https://jsfiddle.net/oe9kc8ne/

您可以使用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>');