Tengo un problema relacionado con la búsqueda de una cadena JSON y tengo una cadena JSON
{"userDetail":[ { "Name": "Scottic Mangry", "Age" : "12", }, { "Name": "Joneson Mangly", "Age" : "18", }, { "Name": "Saoyu Wang", "Age" : "15", }, ]}
y búsqueda de datos
let searchObj = "Mang"
necesito un resultado
{ "Name": "Scottic Mangry", "Age" : "12", }, { "Name": "Joneson Mangly", "Age" : "18", }
¡Cualquier ayuda o sugerencia sería genial!
Algo como:
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
es la cadena que estamos buscando dentro de la propiedad Name
del objeto data.userDetail
includes
distingue entre mayúsculas y minúsculas, por lo que si desea hacer coincidir los resultados independientemente de las mayúsculas y minúsculas, es más fácil poner todo en minúsculas primero
puedes hacerlo usando Array.filter
, Array.values
e 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"))
Como dice cmgchess en los comentarios, el uso de filtros e inclusiones haría el trabajo por usted: para hacerlo más declarativo y legible, lo puse dentro de una función llamada 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));