首页 > 解决方案 > JS:像 SQL 一样的 JSON 数据查询

问题描述

我有以下 JSON 数据

{
  "pebble" {
     "status" : "active"
   },
  "stone" {
     "status" : "active"
   },
  "stone_ny" {
     "status" : "active"
   },
  "stone_london" {
     "status" : "active"
   },
  "stone_tokyo" {
     "status" : "active"
   }
}

在 JS 中,有没有办法让所有匹配 stone_.* 的行返回最后 3 行?

标签: javascriptjson

解决方案


只需使用一个简单的正则表达式来匹配石键,/stone_/gi以这种方式使用:

var names = {
    "pebble": {
        "status": "active"
    },
    "stone": {
        "status": "active"
    },
    "stone_ny": {
        "status": "active"
    },
    "stone_london": {
        "status": "active"
    },
    "stone_tokyo": {
        "status": "active"
    }
}

var matchedNames = {};

for (name in names) {
    if (/stone_/gi.test(name)) {
        matchedNames[name] = names[name];
    }
}

console.log(matchedNames);

Explanation of regex:

  • g = 全局,匹配字符串中模式的所有实例,而不仅仅是一个
  • i = 不区分大小写(例如,/a/i 将匹配字符串“a”或“A”。

推荐阅读