简体   繁体   English

在 JSON Javascript 中搜索

[英]Search inside a JSON Javascript

I have a problem concern search JSON string and i have JSON string我有一个关于搜索 JSON 字符串的问题,我有 JSON 字符串

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

And data search和数据搜索

let searchObj = "Mang"

I need a result我需要一个结果

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

Any help or suggestions would be great!任何帮助或建议都会很棒!

Something like:就像是:

 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 is the string we are searching for inside the Name property of the data.userDetail object needle是我们在data.userDetail对象的Name属性中搜索的字符串

includes is case sensitive, so if you want to match results regardless of case it's easiest to lowercase everything first includes区分大小写,因此如果您想匹配结果而不考虑大小写,最简单的方法是先将所有内容小写

you can do it using Array.filter , Array.values and includes您可以使用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"))

As cmgchess say in comments Using filter and includes would do the job for you: to make it more declarative and readable I put it inside a function called findName正如cmgchess在评论中所说,使用过滤器包含会为您完成这项工作:为了使其更具声明性和可读性,我将它放在一个名为findName的函数中

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

Just a simple filter.只是一个简单的过滤器。

({"userDetail":[
 {
   "Name": "Scottic Mangry",
   "Age" : "12", 
 },
 {
   "Name": "Joneson Mangly",
   "Age" : "18", 
 },
 {
   "Name": "Saoyu Wang",
   "Age" : "15", 
 },
]}).userDetail.filter(e=>e.Name.includes("Mang"))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM