0

I have a problem concern search JSON string and i have JSON string

{"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!

3

4 Answers 4

2

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

includes is case sensitive, so if you want to match results regardless of case it's easiest to lowercase everything first

Sign up to request clarification or add additional context in comments.

Comments

0

you can do it using Array.filter, Array.values and includes

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

Comments

0

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

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

Comments

0

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.