Reputation: 11
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!
Upvotes: 0
Views: 95
Reputation: 517
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"))
Upvotes: 0
Reputation: 5923
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
Upvotes: 2
Reputation: 9253
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));
Upvotes: 0
Reputation: 7139
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"))
Upvotes: 0