Tengo un problema con la creación de código. Primero, aquí hay una matriz de categorías con propiedad de campo. La segunda matriz es un elemento de categorías con un campo de propiedad (esta propiedad es la misma que en categoría, por lo que puedo reconocer qué elemento se adapta a la categoría). ¿Cómo puedo agregar propiedades "editar" y "navegar" a "categorías" basándome en elementos de categorías? Es algo así como una casilla de verificación global si todos los elementos con una categoría, por ejemplo, "etiquetas" tienen edición o buscan verdadero/falso y luego agregan una propiedad a esta categoría.
const categories = [ { name: "Tags", field: "tags", //Here and in every object I want to add property edit: true/false, browse: true/false if all categoriesElements with field "tags" or other are true. hideFinance: false }, { name: "Pixels", field: "retargeting_pixels", hideFinance: false }, { name: "Dashboard", field: "dashboard", hideFinance: false } ]; const categoriesElements = [ { name: "Tags finance", field: "tags", edit: true, browse true }, { name: "Tags channels", field: "tags", edit: true, browse true }, { name: "Pixel creators", field: "pixel", edit: true, browse true } ]
Puede usar el map
y el filter
para lograr esto. A continuación se muestra el ejemplo de cómo usa el mapa de una matriz basada en otra matriz.
const categories = [ { name: "Tags", field: "tags", hideFinance: false }, { name: "Pixels", field: "retargeting_pixels", hideFinance: false }, { name: "Dashboard", field: "dashboard", hideFinance: false } ]; const categoriesElements = [ { name: "Tags finance", field: "tags", edit: true, browse: true }, { name: "Tags channels", field: "tags", edit: true, browse: true }, { name: "Pixel creators", field: "pixel", edit: true, browse: true } ] categories.map(cat=> { const ce = categoriesElements.filter(el=> el.field == cat.field); cat.edit = ce.length > 0 ? ce.every(elm => elm.edit) : false; cat.browse = ce.length > 0 ? ce.every(elm => elm.browse) : false; return cat; }) console.log('categories', categories)