const objectTest = { Shoes: [ { id: 1, name: "xxx", image: "xxxxxx" }, { id: 2, name: "yyy", image: "yyyyyy" }, ], Top: [ { id: 1, name: "zzz", image: "zzzzzz" }, { id: 2, name: "aaa", image: "aaaaaa" }, ], };Sé que puedo usar el método de búsqueda.
const item = objectTest.Shoes.find((p) => p.name === "xxx"); console.log(item); ///{id: 1, name: 'xxx', image: 'xxxxxx'} pero qué pasa si no sé que "xxx" pertenece al grupo de Shoes . ¿Cómo encuentro "xxx" y devuelvo { id: 1, name: "xxx", image: "xxxxxx" }
La forma más fácil es aplanar primero los valores del objeto:
Object.values(objectTest).flat()entonces puedes encontrarlo normalmente:
const item = Object.values(objectTest).flat().find((p) => p.name === "xxx"); Si desea saber a qué "grupo" pertenecía, debe iterar sobre Object.entries(objectTest) .
Si los esquemas de Shoes y Top son iguales, puede aplanarlos como
const objectTest = { Shoes: [ { id: 1, name: "xxx", image: "xxxxxx" }, { id: 2, name: "yyy", image: "yyyyyy" }, ], Top: [ { id: 1, name: "zzz", image: "zzzzzz" }, { id: 2, name: "aaa", image: "aaaaaa" }, ], }; const findX = (objectTest, name) => { return [...objectTest.Shoes, ...objectShoes.Top].find((p) => p.name === "xxx"); }Puede usar el bucle for-in para recorrer la matriz, luego puede encontrar una matriz de objetos en particular.
const objectTest = { Shoes: [ { id: 1, name: "xxx", image: "xxxxxx" }, { id: 2, name: "yyy", image: "yyyyyy" }, ], Top: [ { id: 1, name: "zzz", image: "zzzzzz" }, { id: 2, name: "aaa", image: "aaaaaa" }, ], }; let obj; for(let prop in objectTest) { obj = objectTest[prop].find(x=>x.name == "xxx"); if(obj) break; } console.log(obj)