【问题标题】:Read JSON values by a specific term按特定术语读取 JSON 值
【发布时间】:2021-01-22 01:05:19
【问题描述】:

我有多个 JSON 文件,它们都有一个“matching_terms”值。示例如下:

{
  "calendar": [
    {
      "id": "12345",
      "title": "Acme Proposal Meeting",
      "invitees": "dave, john, bob, carol",
      "matching_terms": ["dave", "john", "bob", "carol", "acme"],
      "date": "2019-01-10 10:00:00"
    },
    {
      "id": "12345",
      "title": "Acme Final Delivery Meeting",
      "invitees": "dave, john, bob, alice",
      "matching_terms": ["dave", "john", "bob", "alice", "acme"],
      "date": "2019-03-01 11:00:00"
    }
  ]
}

我正在创建一个搜索栏,当从搜索栏接收到输入时,它应该遍历所有 JSON 文件并查看 matching_terms 值是否存在给定的输入。如果它存在,那么我们将显示那个特定的 JSON 块。我正在使用 React 来构建它,到目前为止我已经创建了一个搜索栏,接下来的步骤或要遵循的事情是什么。

提前致谢。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 文件是指数据条目还是单独的 json 文件?
  • 什么都没试过,看一些视频学习如何做。
  • 我的意思是单独的 Json 文件。

标签: javascript node.js json reactjs web


【解决方案1】:

您可以像下面这样解析 JSON 文件。但是您要实现的是搜索具有给定值的对象。如果它的 JSON 记录数量很少,那么您可以使用 Javascript 过滤器,否则您需要某种索引算法来搜索对象

var obj = JSON.parse(`{
  "calendar": [
    {
      "id": "12345",
      "title": "Acme Proposal Meeting",
      "invitees": ["dave", "john", "bob", "carol"],
      "matching_terms": ["dave", "john", "bob", "carol", "acme"],
      "date": "2019-01-10 10:00:00"
    },
    {
      "id": "1234",
      "title": "Acme Final Delivery Meeting",
      "invitees": ["dave", "john", "bob", "alice"],
      "matching_terms": ["dave", "john", "bob", "alice", "acme"],
      "date": "2019-03-01 11:00:00"
    }
  ]
}`);

console.log (obj.calendar[0].invitees)

let searchObj  = obj.calendar.filter(val => val.id === '1234')
console.log(searchObj[0])

【讨论】:

    【解决方案2】:

    这应该适合你

    const block = {
      "calendar": [
        {
          "id": "12345",
          "title": "Acme Proposal Meeting",
          "invitees": "dave, john, bob, carol",
          "matching_terms": ["dave", "john", "bob", "carol", "acme"],
          "date": "2019-01-10 10:00:00"
        },
        {
          "id": "12345",
          "title": "Acme Final Delivery Meeting",
          "invitees": "dave, john, bob, alice",
          "matching_terms": ["dave", "john", "bob", "alice", "acme"],
          "date": "2019-03-01 11:00:00"
        }
      ]
    }
    
    function findSearchTerm(input) {
      block.calendar.forEach((e, idx) => {
        if(e.matching_terms.includes(input)) {
          console.log(e)
        } else {
          console.log("Term not found")
        }
      })
    }

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 2020-02-23
      • 2012-01-24
      • 1970-01-01
      相关资源
      最近更新 更多