Actualmente estoy buscando a través de una matriz de objetos que contiene una matriz de objetos, la estructura de datos tiene el siguiente aspecto:
const category = 'general' const field = 'rating' const schema = { categories: [ { name: 'general', label: 'General', fields: [ { name: 'id', label: 'Market Street ID', type: 'string' }, { name: 'rating', label: 'Rating', type: 'number' } ] }, { name: 'location', label: 'Location', fields: [ { name: 'search', label: 'Query Parameters', type: 'string' } ] } ] }El resultado esperado es buscar en la matriz de categorías un nombre de categoría determinado (en este caso, "general") y luego buscar en los campos un nombre de campo determinado (en este caso, "calificación") y devolver el tipo asociado con el campo. . Lo he logrado haciendo lo siguiente:
const type = schema.categories .filter((cat) => cat.name === category) .map((cat) => { const fieldData = cat.fields.find((f) => f.name === field) return fieldData.type }) console.log(type[0])Me pregunto si hay una forma más eficiente de buscar a través de la matriz de objetos dentro de una matriz de objetos, posiblemente sin que el tipo se devuelva en una matriz.
Si solo necesita la primera coincidencia, puede usar Array#find junto con el encadenamiento opcional .
const category="general",field="rating",schema={categories:[{name:"general",label:"General",fields:[{name:"id",label:"Market Street ID",type:"string"},{name:"rating",label:"Rating",type:"number"}]},{name:"location",label:"Location",fields:[{name:"search",label:"Query Parameters",type:"string"}]}]}; const type = schema.categories.find(cat => cat.name === category) ?.fields.find(f => f.name === field).type; console.log(type);