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

138
Vistas
Buscar índice de matriz 2D con múltiples elementos

Tengo 2 matrices. ¿Cómo puedo verificar si el Array 2 está en el Array 1 y cómo puedo encontrar el índice del primer Array?

 0: (2) ['pik13', 'karo10'] 1: ['karo14'] 2: ['karo11'] 3: (2) ['karo6', 'pik10'] 4: ['herz10'] 5: (3) ['pik11', 'kreuz10', 'kreuz11']
 0: (3) ['pik11', 'kreuz10', 'kreuz11']

Estas son las 2 matrices. La salida esperada debe ser 5.

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

0

Si el orden no importa puedes usar lo siguiente:

 const searchIn = [ ["pik13", "karo10"], ["karo14"], ["karo11"], ["karo6", "pik10"], ["herz10"], ["pik11", "kreuz10", "kreuz11"], ]; const searchFor = ["pik11", "kreuz10", "kreuz11"]; /** * Check if the the elements in an array matches the elements in the Set * @param {Array} array * @param {Set} toBeFound * @returns */ function compareArray(array, toBeFound) { // early outs it the element is not an array or the length does not match if (!Array.isArray(array) || array.length !== toBeFound.size) return false; // finds match in O(n) due fast lookup in Set return array.every((item) => toBeFound.has(item)); } /** * Search for array in array. * @param {Array} toBeSearched * @param {Array} toBeFound * @returns */ function searchForArray(toBeSearched, toBeFound) { // use a set to make the lookups faster => O(1) const elements = new Set(toBeFound); return toBeSearched.findIndex((array) => compareArray(array, elements)); } console.log(searchForArray(searchIn, searchFor));
Esto usa un Set para acelerar la búsqueda cuando se comparan valores de matriz con O(1) en contraste con el uso de includes() , lo que resultará en el peor tiempo de ejecución de búsqueda de O(n) . Por esta razón, el peor tiempo de ejecución para compareArray() es O(n) en lugar de O(n²) . En la mayoría de los casos, incluso será significativamente más rápido, ya que, por ejemplo, en su ejemplo, solo hay una matriz que coincide en longitud con la matriz que buscamos, por lo que solo comparamos los valores de la matriz una vez. En general, en el peor de los casos, el algoritmo tomará O(m * n) donde m es el número de matrices para buscar y n es el número de elementos en la matriz que estamos buscando.

Esto no funcionará si busca matrices anidadas, pero puede funcionar con algunos cambios para comparaciones profundas.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si el orden SÍ importa...

 let arr =[['pik13', 'karo10'],['karo14'],['karo11'],['karo6', 'pik10'],['herz10'],['pik11', 'kreuz10','kreuz11'],]; let compare = ['pik11', 'kreuz10', 'kreuz11']; let index = arr.findIndex(x => JSON.stringify(x)===JSON.stringify(compare)); // This could also for a bit more speed use String(x) === String(compare) as @Thomas notes in the below comments console.log(index);

Como se señaló en los comentarios, JSON.Stringify puede ser muy lento, para matrices pequeñas y cálculos no intensivos probablemente esté bien, así que aquí hay un método más rápido para comparar 1 por 1 que no convierte la matriz en una cadena:

 let arr =[['pik13', 'karo10'],['karo14'],['karo11'],['karo6', 'pik10'],['herz10'],['pik11', 'kreuz10', 'kreuz11']]; let compare = ['karo6', 'pik10']; let index = arr.findIndex(x => x.length === compare.length && x.every((v,i)=> compare[i] === v)); console.log(index);

Si el orden NO importa...

 let arr =[['pik13', 'karo10'],['karo14'],['karo11'],['karo6', 'pik10'],['herz10'],['pik11', 'kreuz10', 'kreuz11']]; let compare = ['kreuz10', 'kreuz11', 'pik11']; let index = arr.findIndex(x => x.length === compare.length && x.every((i)=> compare.includes(i))); console.log(index);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar JSON.stringify para la igualdad de matrices y findIndex para obtener el índice de resultados.

 const array2D = [['pik13', 'karo10'],['karo14'],['karo11'],['karo6', 'pik10'],['herz10'],['pik11', 'kreuz10', 'kreuz11']] const subjectArray1D = ['pik13', 'karo10']; const result = array2D.findIndex((array1D) => { return JSON.stringify(array1D) === JSON.stringify(subjectArray1D); }); console.log(result);

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