Ciao,
hai fatto un po un minestrone...
Come prima cosa che salta all'occhio é il fatto che non metti il punto e virgola nel codice e in alcuni punti lo indenti male... ma va beh, questo ne pregiudica la leggibilitïa' piu' che altro.
Poi ricorda che "1" é diverso da 1 (notare le virgolette), quindi quando ricavi i numeri da stringhe inviate dall'utente (scritte nel input) devi trasformarli in numeri prima di metterli nell'array.
Inoltre attento a quando scrivi nei cicli, se scrivi in una variabile dentro il ciclo ti ritrovi solo l'ultima scrittura in quanto le precedenti vengo sovrascritte.
Ancora: come per il confronto stringhe-numeri detto prima, anche l'ordinamento degli array é differente se sono numeri o stringhe, infatti "10" viene prima di "2" se parliamo di stringhe, questo perché il primo numero di dieci (1) é minore del primo numero di 2 (2), quindi avresti un ordinamento tipo 1,10,2. quindi anche qui devi mettere nell'array numeri e non stringhe (devi ovviamente usare parseInt() sul value dell'input prima di fare push nell'array).
Non é finito: se ti interessa estrarre numeri casuali che non si ripetono questo che usi non é il modo migliore, in quanto i numeri casuali che generi posso uscire piu' volte, quindi un modo (neanche il piu' performante, ma almeno é semplice) é quello di creare un array con i numeri da 1 a 90 (compresi) e creare un numero random scelto tra 0 e la lunghezza dell'array che contiene appunto i numeri da 1 a 90, man mano che estrai usi il numero random uscito come indice dell'array, e prima di uscire dal ciclo togli quel numero dall'array, in questo modo sei sicuro che non possano essere estratti doppioni.

Poi c'erano altre cosette ma non me le ricordo tutte, comunque puoi controllare questo codice derivato dal tuo, ma modificato per "funzionare"...