0

I have an empty array:

const timeArray = []
const a = new Date(startTime_minTime)
const b = new Date(startTime_maxTime)
const disabledValueStart = new Date(maxStart)

// where startTime_minTime and startTime_maxTime are only two dates (date and time) and maxStart is the last value

Date.prototype.addHours = function (h) {
  this.setTime(this.getTime() + h * 60 * 30 * 1000)
  return this
}

//  Now I'm trying to do a while to populate the array 
while (a <= b) {
  timeArray.push(a)
  if (a !== disabledValueStart) {
    a.addHours(1)
  }
}

The problem is that my array has only the last value repeated for the number of elements that should populate it, how do I add one element at a time, so that I have them all at the end and not just the same repeated value?

7
  • You're pushing the exact same object on each iteration Commented Mar 16, 2022 at 14:35
  • So it not enter in the the if and add hour to variable 'a' ? Commented Mar 16, 2022 at 14:36
  • That depends on the values of a, b, and disabledValueStart. Commented Mar 16, 2022 at 14:37
  • What does this code have to do with React/React Native? Commented Mar 16, 2022 at 14:46
  • I should populate the array with date except for disabledValueStart Commented Mar 16, 2022 at 14:51

1 Answer 1

1

You are pushing the same date (a) to the array, over and over. Clone the date and push the clone. That way each item in the array is a different date.

Here is a working snippet. The key is timeArray.push(new Date(a)).

const timeArray = []
const a = new Date()
const b = new Date(a.getTime()+60*60*24*1000)
const disabledValueStart = new Date(a.getTime()-60*60*24*1000)

Date.prototype.addHours = function (h) {
  this.setTime(this.getTime() + h * 60 * 30 * 1000)
  return this
}

while (a <= b) {
  timeArray.push(new Date(a)) // here is the important change
  if (a !== disabledValueStart) {
    a.addHours(1)
  }
}

console.log(timeArray)

Sign up to request clarification or add additional context in comments.

1 Comment

Please don't just dump a load of code. Explain what the problem was and document what your code does to solve it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.