Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

126
Vistas
Búsqueda de filtro anidado en Javascript

El requisito de la funcionalidad de búsqueda es tal que cuando la entrada de búsqueda coincide con categories.name o dentro de categories -> dishes -> dish.name la salida debe ser categories.name .

A continuación se muestran los datos de JS:

 [
 {
 name: "Tikka",
 img: "paneer malai tikka.jpg",
 categories: [
 {
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745b6",
 name: "Tikka",
 dishes: [
 {
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745b7",
 name: "paneer malai tikka",
 img: "paneer malai tikka.jpg",
 type: "veg", },
 {
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745b9",
 name: "panner jaitoni tikka",
 img: "jaitooni paneer tikka.png",
 type: "veg",
 },
 {
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745bb",
 name: "chicken pahadi tikka",
 img: "chicken pahadi tikka.jpeg",
 type: "non veg",
 },
 ],
 },
 {
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745f2",
 name: "Tikka",
 dishes: [
 {
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745f3",
 name: "lehsuni fish tikka",
 img: "lehsuni fish tikka.jpg",
 type: "non veg",
 },
 ],
 },
 ],
 },
];

FilterSearch.js

Sin embargo, la siguiente función está devolviendo la salida con salida duplicada.

 let filteredData = [];
categories.forEach((category) =>
 category.categories.forEach((subcategory) =>
 subcategory.dishes.forEach(dish => {
 if (dish.name.toLowerCase().includes(searchInput)) {
 filteredData.push(category);
 };
 }
 )
 )
)

Cualquier ayuda sería muy apreciada. Por favor, hágamelo saber si necesita más información al respecto.

almost 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

¿Por qué no evitar las duplicaciones en primer lugar comprobando si ya existe?

 var categories = [{
 name: "Tikka",
 img: "paneer malai tikka.jpg",
 categories: [{
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745b6",
 name: "Tikka",
 dishes: [{
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745b7",
 name: "paneer malai tikka",
 img: "paneer malai tikka.jpg",
 type: "veg",
 },
 {
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745b9",
 name: "panner jaitoni tikka",
 img: "jaitooni paneer tikka.png",
 type: "veg",
 },
 {
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745bb",
 name: "chicken pahadi tikka",
 img: "chicken pahadi tikka.jpeg",
 type: "non veg",
 },
 ],
 },
 {
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745f2",
 name: "Tikka",
 dishes: [{
 isActive: true,
 isDeleted: false,
 _id: "61a22648521aa07d718745f3",
 name: "lehsuni fish tikka",
 img: "lehsuni fish tikka.jpg",
 type: "non veg",
 }, ],
 },
 ],
}, ];

let filteredData = [];
var searchInput = "a"
categories.forEach((category) =>
 category.categories.forEach((subcategory) =>
 subcategory.dishes.forEach(dish => {
 if (dish.name.toLowerCase().includes(searchInput)) {
 if (filteredData.indexOf(category)==-1) {
 filteredData.push(category);
 }
 };
 })
 )
)

console.log(filteredData)
 .as-console-wrapper {max-height: 100% !important}

almost 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda