Skip to content

I need to minus one key, of array of objects, from another key of another array of objects

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}))

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);