【问题标题】:Search inside a JSON Javascript在 JSON Javascript 中搜索
【发布时间】:2022-07-11 17:22:32
【问题描述】:

我在搜索 JSON 字符串时遇到问题,我有 JSON 字符串

{"userDetail":[
 {
   "Name": "Scottic Mangry",
   "Age" : "12", 
 },
 {
   "Name": "Joneson Mangly",
   "Age" : "18", 
 },
 {
   "Name": "Saoyu Wang",
   "Age" : "15", 
 },
]}

和数据搜索

let searchObj = "Mang"

我需要一个结果

 {
   "Name": "Scottic Mangry",
   "Age" : "12", 
 },
 {
   "Name": "Joneson Mangly",
   "Age" : "18", 
 }

任何帮助或建议都会很棒!

【问题讨论】:

  • filterincludes 可以提供帮助

标签: javascript


【解决方案1】:

类似:

let data = {
    "userDetail":[
     {
       "Name": "Scottic Mangry",
       "Age" : "12", 
     },
     {
       "Name": "Joneson Mangly",
       "Age" : "18", 
     },
     {
       "Name": "Saoyu Wang",
       "Age" : "15", 
     },
    ]
}

let needle = "Mang";
let result = data['userDetail'].filter(el => el.Name.includes(needle));
console.log(result); 

needle 是我们在data.userDetail 对象的Name 属性中搜索的字符串

includes 区分大小写,因此如果您想匹配结果而不考虑大小写,最简单的方法是先将所有内容小写

Working example

【讨论】:

    【解决方案2】:

    您可以使用 Array.filterArray.valuesincludes 来完成此操作

    const data = {"userDetail":[
     {
       "Name": "Scottic Mangry",
       "Age" : "12", 
     },
     {
       "Name": "Joneson Mangly",
       "Age" : "18", 
     },
     {
       "Name": "Saoyu Wang",
       "Age" : "15", 
     },
    ]}
    
    
    const search = (data, search) => data.filter(d => Object.values(d).some(v => v.includes(search)))
    
    console.log(search(data.userDetail, "Mang"))

    【讨论】:

      【解决方案3】:

      正如 cmgchess 在 cmets 中所说,使用 filterincludes 将为您完成这项工作:

      const objs = {
        "userDetail": [{
            "Name": "Scottic Mangry",
            "Age": "12",
          },
          {
            "Name": "Joneson Mangly",
            "Age": "18",
          },
          {
            "Name": "Saoyu Wang",
            "Age": "15",
          },
        ]
      }
      
      function findName(name) {
        return objs.userDetail.filter(user => user.Name.includes(name))
      }
      let searchObj = "Mang";
      console.log(findName(searchObj));

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 2015-01-20
        • 2022-01-21
        • 1970-01-01
        • 2012-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多