Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

107
Visualizações
Obtener clave de índice de matriz - Javascript

El problema

Estoy iterando sobre una matriz de estados que se ve así

 let states = [ ['AL', 0], ['AK', 0], ['AZ', 0], ['AR', 0], ['CA', 0]...... ]

y comparándolo con la matriz de estados que en realidad tiene valores después del código de estado. Tengo una función que intenta fusionar ambas matrices al verificar la primera matriz y ver si la clave (estado) existe en la segunda matriz. Si lo hace, debería reemplazar esa matriz con la matriz que se encuentra en la segunda matriz.

He intentado

A continuación se muestra mi intento, claramente no funciona, he intentado cambiar el índice de la matriz y obtener solo el código de estado, pero arroja un error indefinido.

 function mergeArrays(arr1, arr2) { for(let i = 0; i < arr1.length; i++) { let arr1state = arr1[i]; let arr2state = arr2[i]; if (arr1state === arr2state) { console.log(arr1[i], arr2[i]) } } }
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Repetiría los estados reales, los que tienen los valores correctos, y los colocaría en un mapa.

Luego itere la matriz de states y simplemente verifique si su valor deseado existe en dicho mapa.

 let states = [['AL', 0], ['AK', 0], ['AZ', 0], ['AR', 0], ['CA', 0]]; let actualStates = [['AL', 1], ['AK', 2], ['AZ', 3], ['CA', 4]]; function merge(states, actualStates){ let map = {}; for(let actualState of actualStates) map[actualState[0]] = actualState[1]; for(let state of states) state[1] = map[state[0]] || state[1]; return states; } console.log(merge(states, actualStates));
about 4 years ago · Juan Pablo Isaza Relatório

0

Está comparando dos matrices entre sí, no sus claves, lo que debe comparar es arr1state[0] === arr2state[0] , de lo contrario, solo estaría verificando ['AL', 0] === ['AL', 13] , por ejemplo, como arr1state en realidad contiene ['AL', 0] para i = 0 .

Sin embargo, también existe el problema de que espera que ambas matrices tengan la misma longitud y estén en el mismo orden, para solucionar esto, debe iterar toda la segunda matriz en busca de esa clave de estado, para cada elemento en la primera matriz . Entonces, algo como esto:

 function mergeArrays(arr1, arr2) { for(let i = 0; i < arr1.length; i++) { let arr1state = arr1[i][0]; for(let j = 0; j < arr2.length; j++) { let arr2state = arr2[j][0]; if (arr1state === arr2state) { console.log(`[${i}, ${j}] ${arr1[i]}, ${arr2[j]}`); } } } }

Este ejemplo en realidad no realiza la fusión, ya que no mencionó si solo desea reemplazarlo, o lo que debería suceder si solo uno de ellos tiene un valor, sin embargo, ya debería responder a su pregunta de qué está mal y permitir usted para arreglar su código.

about 4 years ago · Juan Pablo Isaza Relatório

0

Itere sobre la primera matriz de estados y encuentre la matriz correspondiente en la segunda matriz de estados (puede usar reduce para hacer eso):

 const states1 = [ ['AL', 0], ['AK', 0], ['AZ', 0], ['AR', 0], ['CA', 0], ] const states2 = [ ['AL', 1], ['AZ', 3], ['CA', 5], ] const mergeStates = ({ arr1, arr2 }) => { // iterate over the first array: return arr1.reduce((a, [state1, val1]) => { // find the corresponding item in the second array: const item = arr2.find(([state2]) => state1 === state2) // check if item exists if (item) { const [_, val2] = item a = [...a, [state1, val2]] } else { a = [...a, [state1, val1]] } return a }, []) } const merged = mergeStates({ arr1: states1, arr2: states2 }) console.log(merged)


O una solución más simple:

 const states1 = [ ['AL', 0], ['AK', 0], ['AZ', 0], ['AR', 0], ['CA', 0], ] const states2 = [ ['AL', 1], ['AZ', 3], ['CA', 5], ] const mergeStates = ({ arr1, arr2 }) => { // creating objects from the arrays: const baseObj = Object.fromEntries(arr1) const newObj = Object.fromEntries(arr2) // spreading the objects, so the latter // overwrites the former if keys match // then turning it back to an array return Object.entries({ ...baseObj, ...newObj, }) } const merged = mergeStates({ arr1: states1, arr2: states2 }) console.log(merged)

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda