Estoy tratando de crear una matriz a partir de otras dos matrices usando un bucle, donde en ambas matrices comparo dos cadenas y cuando encuentro dos cadenas que son iguales, envío el valor a la matriz desde la segunda matriz comparada, y si no Si no lo encuentro, presiono 0. El problema es que la matriz debe tener exactamente la longitud de la primera matriz.
const array1 = ['21', '22', '23', '24', '25', '26', '27'] const array2 = [{score: 1, date: '21'}, {score: 3, date: '23'} ] la salida debería verse así: [1, 0, 3, 0, 0, 0, 0] <=== esta matriz debe tener la longitud de la matriz1, y tengo un problema para crear un bucle adecuado, o tal vez esto no debería ser un bucle.
Puede lograr esto combinando map() (para iterar sobre la primera matriz) y find() (para obtener la puntuación correcta de la segunda matriz). Para volver a 0 en caso de que no haya ningún resultado en array2 , puede combinar el encadenamiento opcional con la fusión nula .
const array1 = ['21', '22', '23', '24', '25', '26', '27']; const array2 = [{score: 1, date: '21'}, {score: 3, date: '23'} ]; const array3 = array1.map(value => array2.find(obj => obj.date === value)?.score ?? 0); console.log(array3);