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

123
Views
Insertar elemento en índice específico de matriz dinámica con diferentes longitudes

Disculpe la pregunta de los principiantes, todavía soy muy nuevo en javascript.

Antecedentes :

Estoy creando un gráfico que debe tener 2 matrices diferentes, pero su longitud debe coincidir. Para que estas matrices coincidan en longitud, necesito determinar valores que coincidan y valores que no usen fechas (esto ya se logró, ¡solo da una idea!)

Problema :

Necesito crear una nueva matriz que tenga la misma longitud que la matriz 2 (ejemplo a continuación), manteniendo los datos existentes de la matriz 1.

Por ejemplo: la matriz a la que quiero agregar se parece a esto:

 [1, 5, 10, 35, ...etc]

Y tiene una longitud de 20.

La otra matriz (aquella en la que he asignado valores que coinciden/no coinciden) se ve así:

 [{date, matched: false}, {date, matched: true}, {date, matched: true}, {date, matched: false}, ...etc]

Y tiene una longitud de 30.

Básicamente, lo que estoy tratando de hacer es que para cada valor donde coincida = falso, deseo insertar un 0 en la primera matriz (o crear una nueva matriz donde el valor = 0). Sin embargo, cuando la coincidencia es verdadera, deseo mantener el valor existente en la primera matriz. Tengo problemas para usar bucles ya que las longitudes y los índices son diferentes entre los dos.

¿Alguien puede proporcionar alguna idea sobre cómo lograr esto?

¡Gracias! :D

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

No estoy seguro de si esto es lo que tenía en mente, pero puede usar Array#map (agarrando el índice) para encontrar si devolver o no el valor real, o cero.

 array1.map((a,i) => array2[i].matched ? a : 0) 

 let array1=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]; let array2 = [{date:'2022/04/25', matched: false}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: false},{date:'2022/04/25', matched: false}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: false},{date:'2022/04/25', matched: false}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: false},{date:'2022/04/25', matched: false}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: false},{date:'2022/04/25', matched: false}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: false},{date:'2022/04/25', matched: false}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: false},{date:'2022/04/25', matched: false}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: true}, {date:'2022/04/25', matched: false}] let matched = array1.map((a,i) => array2[i].matched ? a : 0); console.log(matched)

about 4 years ago · Juan Pablo Isaza Report

0

¿Qué has probado?

¿Qué sucede cuando matriz2, una matriz de objetos, encuentra valores falsos de coincidencia para los que no hay índice en la matriz 1? ¿Qué valor se almacena en matriz1 cuando matriz2 es mayor y coincide con verdadero?

 arr1 [1, 5, 10, 35] // 0 1 2 3 arr2 [ {date, matched: false}, {date, matched: true}, ...., {date, matched: false} // indice 30 ]; arr1 [0,5,10,35,undefined?,null?,another_data?,0]

Puedes usar un bucle for pero forEach() es más simple, ¡veamos!

 array2.forEach((element,index)=>{ // Body of the loop and this code is executed for each element if(!element.matched){ // at each iteration index represents the position of the element en array2 array1[index] = 0; } })

El código recorre la matriz de objetos a través de cada elemento y su índice , luego, en cada iteración, verificamos el valor coincidente de cada elemento ({matched:true,..}).

Si emparejado es falso (! verdadero), entonces en la posición de índice que tiene un elemento en matriz2, asignaremos 0 en matriz1.

La desventaja de esto es que solo se establecen valores falsos, lo que dejará una matriz con valores indefinidos .

Otra opción si solo desea mantener la longitud de array1 podría ser iterar sobre esta matriz y no sobre array2

 array1.forEach((element,index)=>{ if(!array2[index].matched) array1[index] = 0; });

De esta forma array1 mantiene su longitud pero descartamos el resto de elementos de array2.

Tenga en cuenta que solo uso index y no element , podría haber establecido el valor de element en 0 en lugar de array1[index], que es lo mismo al final, pero quería ser más pedagógico. Como no estamos interesados en el elemento, usemos un común para.

 for(let index = 0; index < array1.length; index++){ if(!array2[index].matched) array1[index] = 0; }

Pero todo depende de lo que vaya a hacer con los valores sobrantes de array2.

Ahora, si desea almacenar un valor en las posiciones indefinidas de array1 para las cuales matched==true, entonces use un else en la condición.

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