Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

129
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!