I'm trying to create an array from two other arrays using a loop, where in both arrays I compare two strings and when I find two strings that are the same I push the value to the array from second compared array, and if I don't find it I push 0. The problem is that the array has to be exactly the length of the first array.
const array1 = ['21', '22', '23', '24', '25', '26', '27']
const array2 = [{score: 1, date: '21'}, {score: 3, date: '23'} ]
output should look like this: [1, 0, 3, 0, 0, 0, 0] <=== this array must have length of array1, and i have problem to create proper loop, or maybe this is shouldnt be loop?
You can achieve this by combining map() (to iterate over the first array) and find() (to get the right score out of the second array). To fall back to 0 in case there is no result in array2, you can combine optional chaining with nullish coalescing.
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);