I have next two arrays:
const firstArray = [{startDate: 5, number: 15}, {startDate: 25, number: 10}, {startDate: 26, number: 10}];
const secondArray= [{startDay: 2, endDay:10, number: 15}, {startDay: 20, endDay:30, number: 20}];
if startDate is between startDay and endDay, I have to minus firstArray number and secondArray number creating new key with result
As result, I have to put new key in firstArray with result:
const firstArray = [{startDate: 5, number: 15, result: 0}, {startDate: 25, number: 25, result: -10}, {startDate: 26, number: 25, result: 0}];
if I have more than one startDate in the same range(between startDay and endDay) I have to add to the last result of that range
The code I have for now:
firstArray.map(el => ({...el, result: el.number - here's number from the secondArray according to the requirements}))
Advertisement
Answer
Map won’t work too well for looping through two arrays and changing values.
Just use a simple for loop, check your conditions between firstArray[i] and secondArray[i], then add the value to firstArray[i].result
const firstArray = [{startDate: 5, number: 15}, {startDate: 25, number: 20}];
const secondArray= [{startDay: 2, endDay:10, number: 10}, {startDay: 20, endDay:30, number: 20}];
for (let i = 0; i < Math.min(firstArray.length, secondArray.length); i++)
if (secondArray[i].startDay < firstArray[i].startDate && firstArray[i].startDate < secondArray[i].endDay)
firstArray[i].result = firstArray[i].number - secondArray[i].number;
console.log(firstArray);