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

212
Vistas
JavaScript: verifique que coincidan todos los elementos de las matrices 2D

Estoy tratando de comparar una matriz de elementos con los elementos de una matriz 2D. Si se encuentra una coincidencia, aumentará el recuento de esa fila de elementos 2D. Logré hacerlo con la primera fila de la matriz 2D, sin embargo, no sé cómo hacer que el código siga buscando la siguiente fila de la matriz 2D.

 var fruits=[ ['apple', 'banana', 'mango'], ['grape', 'pineapple', 'blueberry'], ['strawberry', 'mangosteen'] ]; var fruit_i_like=[ ['grape', 'banana', 'pineapple'] ]; //if found match from the first row of fruits, increment this var var fruit1_count = 0; //if found match from the second row of fruits, increment this var var fruit2_count = 0; //if found match from the third row of fruits, increment this var var fruit3_count = 0; for (var i = 0; i < fruit_i_like.length; i++) { for (var j = 0; j < fruits.length; j++){ if (fruits[j].indexOf(fruit_i_like[i]) > -1) { fruit1_count++; } } }

El resultado esperado debería ser imprimir el número de coincidencias que tiene la matriz fruit_i_like con cada fila de la matriz fruit. Por ejemplo, aquí fruit1_count sería 1, fruit2_count sería 2, fruit3_count sería 0.

¿Hay alguna forma de verificar las otras filas usando JS puro? ¡Gracias!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Probablemente sea mejor usar una matriz que variables en este caso, para que no tenga que codificar nombres y definiciones. En este caso, obtendrá una lista ordenada del recuento de cada fruta al final de la matriz, en el orden en que las colocó inicialmente en la matriz de fruits (tampoco estoy seguro de por qué fruit_i_like es bidimensional).

 var fruits = [ ['apple', 'banana', 'mango'], ['grape', 'pineapple', 'blueberry'], ['strawberry', 'mangosteen'] ]; var fruit_i_like = [ ['grape', 'banana', 'pineapple'] ]; let fruitCounts = []; fruits.forEach((fruitsList, i) => { fruitCounts.push(0); fruit_i_like[0].forEach(likedFruit => { if (fruitsList.includes(likedFruit)) { fruitCounts[i]++; } }); }); fruitCounts.forEach((count, i) => { console.log(`Fruit count ${i} = ${count}`); });

about 4 years ago · Juan Pablo Isaza Denunciar

0

1) Puede lograr fácilmente el resultado usando Set y simple for loop. Primero puede crear un objeto de propiedades en el que desea contar como:

 const obj = { fruit1_count: 0, fruit2_count: 0, fruit3_count: 0, }; 

 var fruits = [ ["apple", "banana", "mango"], ["grape", "pineapple", "blueberry"], ["strawberry", "mangosteen"], ]; var fruit_i_like = [["grape", "banana", "pineapple"]]; const obj = { fruit1_count: 0, fruit2_count: 0, fruit3_count: 0, }; const set = new Set(fruit_i_like[0]); for (let i = 0; i < fruits.length; ++i) { const arr = fruits[i]; for (let j = 0; j < arr.length; ++j) { if (set.has(arr[j])) obj[`fruit${i + 1}_count`]++; } } const { fruit1_count, fruit2_count, fruit3_count } = obj; console.log(fruit1_count); console.log(fruit2_count); console.log(fruit3_count);

2) También puede usar reduce y forEach aquí como:

 var fruits = [ ["apple", "banana", "mango"], ["grape", "pineapple", "blueberry"], ["strawberry", "mangosteen"], ]; var fruit_i_like = [["grape", "banana", "pineapple"]]; const obj = { fruit1_count: 0, fruit2_count: 0, fruit3_count: 0, }; const set = new Set(fruit_i_like[0]); const resultObj = fruits.reduce((acc, curr, i) => { curr.forEach((o) => { if (set.has(o)) acc[`fruit${i + 1}_count`]++; }); return acc; }, obj); const { fruit1_count, fruit2_count, fruit3_count } = resultObj; console.log(fruit1_count); console.log(fruit2_count); console.log(fruit3_count);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Llegué un poco tarde a la fiesta, pero también puede hacer esto con un par de métodos Array.reduce( Array.reduce() anidados y usando Array.includes() en la reducción anidada para incrementar el conteo si está incluido en la matriz.

 const fruits = [ ['apple', 'banana', 'mango'], ['grape', 'pineapple', 'blueberry'], ['strawberry', 'mangosteen'] ]; const fruit_i_like = [ ['grape', 'banana', 'pineapple'] ]; const [fruit1_count, fruit2_count, fruit3_count] = fruits.reduce((a, c, i) => { a[i] = fruit_i_like[0].reduce((aa, cc) => aa + c.includes(cc), 0); return a; }, new Array(fruits.length)); console.log({ fruit1_count: fruit1_count, fruit2_count: fruit2_count, fruit3_count: fruit3_count })

about 4 years ago · Juan Pablo Isaza 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