I'm really embarrased. I misspelled quote and then copied and pasted it. I hadn't even considered it was due to a spelling mistake. I need to be more careful if I wanna be a programmer
So, the problem wasn't that it was generating the same quote, but that it wasn' finding the quote property of the random index because it was misspelled, but it could find the author so it was leaving the quote and just changing the author. However, I have already thought about adding a currentQuote and an if statement to avoid generating the same quote.
I originally wrote my var random like you have above, but when I started having problems, I started reading stuff on stackoverflow and tried changing some things. I agree that json.length is better though.
Anyways, thank you so much for you help and next time I will make sure I check basic spelling before agonizing so much and wasting your time.