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

130
Vistas
Empuje el objeto y las claves con valor múltiple a la matriz en for loop

Tengo una matriz de palabras y quiero buscar las palabras en la matriz de texto, encontrarlas y verificar si el siguiente elemento o elementos después de la palabra son números, insertar el número o los números con la palabra en el nuevo objeto y empujar el objeto a la nueva matriz. como esto:

 words = ['blue' , 'red' , 'yellow' , 'grin' , 'black' , 'white']; text = ['xxx' , 'yyy' , 'red' , 'zzz' , 'black' , 65 , 54 , 'white' , 'aaa' , 'yellow' , 50 , 'ppp']; Output I want: [{'black' : [65 , 54] , 'yellow' : [50]}];

Pero mi código actual solo devuelve los números después de la palabra y los inserta en una nueva matriz:

 words = ['blue' , 'red' , 'yellow' , 'grin' , 'black' , 'white']; text = ['xxx' , 'yyy' , 'red' , 'zzz' , 'black' , 65 , 54 , 'white' , 'aaa' , 'yellow' , 50, 'ppp']; const set = new Set(words); let result = []; for (let i = 0; i < text.length; i++) { if (set.has(text[i])) { while (typeof text[i + 1] == "number") { result.push(text[++i]); } } } console.log(result) //output : [65 , 54 , 50]

Entonces, ¿cómo puedo enviar números con sus claves a una matriz?

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

0

Todavía recopila números en la matriz de result si encuentra una palabra coincidente. Pero comienza con una matriz vacía para cada palabra coincidente.

No desea utilizar el operador de incremento en i para pasar por el text .

res es un Object en el que almacena palabras coincidentes como claves y matrices de result como valores.

 words = ['blue' , 'red' , 'yellow' , 'grin' , 'black' , 'white']; text = ['xxx' , 'yyy' , 'red' , 'zzz' , 'black' , 65 , 54 , 'white' , 'aaa' , 'yellow' , 50, 'ppp']; const set = new Set(words); let res = {}; for (let i = 0; i < text.length; i++) { if (set.has(text[i])) { let result = []; let j = i; while (typeof text[j + 1] == "number") { result.push(text[++j]); } if(result.length > 0) res[text[i]] = result; } } console.log(res)

about 4 years ago · Juan Pablo Isaza Denunciar

0

No tiene la creación de objetos y empujando a la matriz principal correctamente. Está verificando si los nodos del text están allí en words de matriz, si eso se encuentra, está empujando los números después de esa palabra encontrada a una matriz correctamente. Pero no debe empujar eso a una matriz simple. en su lugar, debe enviarlo a un objeto que tenga la clave que encontró como coincidencia, inicialmente debe declararse como una matriz vacía. Allí, después de eso, los números deben ser enviados a esta matriz.

Encuentre el violín de trabajo para el mismo

 const words = ['blue', 'red', 'yellow', 'grin', 'black', 'white']; // const text = ['black' , 50 , 'black' , 600 , 10 , 'black' , 40]; const text = ['xxx', 'yyy', 'red', 'zzz', 'black', 65, 54, 'white', 'aaa', 'yellow', 50, 'ppp']; const set = new Set(words); const finalResult = []; for (let i = 0; i < text.length; i++) { if (set.has(text[i])) { const newObj = {}; const key = text[i]; const result = []; while (typeof text[i + 1] == "number") { result.push(text[++i]); } if (result.length > 0) { newObj[key] = result finalResult.push(newObj); } } } console.log(finalResult);

La implementación de Array.reduce de su requisito será así

 const words = ['blue', 'red', 'yellow', 'grin', 'black', 'white']; // const text = ['black' , 50 , 'black' , 600 , 10 , 'black' , 40]; const text = ['xxx', 'yyy', 'red', 'zzz', 'black', 65, 54, 'white', 'aaa', 'yellow', 50, 'ppp']; const modifiedText = text.reduce((acc, curr, index) => { if (typeof text[index] === "string" && typeof text[index + 1] === "number" && words.includes(curr)) { const newArr = []; let startIndex = index + 1; while (text[startIndex] && typeof text[startIndex] === "number") { newArr.push(text[startIndex]); startIndex++; } if(newArr.length) { acc.push({[curr] : newArr }); } } return acc; }, []); console.log(modifiedText);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe presionar un objeto que contenga la palabra como clave y los números que desee.

Algo como

 words = ['blue' , 'red' , 'yellow' , 'grin' , 'black' , 'white']; text = ['xxx' , 'yyy' , 'red' , 'zzz' , 'black' , 65 , 54 , 'white' , 'aaa' , 'yellow' , 50, 'ppp']; const set = new Set(words); let result = []; for (let i = 0; i < text.length; i++) { if (set.has(text[i]) && typeof text[i + 1] == "number") { let key = text[i] let arr = [] while (typeof text[i + 1] == "number") { arr.push(++i) } result.push({[key]: arr}) } } 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