javascript - Hur man lägger till ett nytt värde i början av en befintlig array med spridningsoperatorn?


Jag försöker unshift ett arrayvärde med en befintlig array genom att använda spread-operatorn. Får ett fel. Kan någon hjälpa mig att få rätt tillvägagångssätt?

här är min kod :

uploadedFiles : [...state.uploadedFiles.unshift( (<fileActions.UploadFileSuccess>action).payload ) ]

får ett fel som:

The Number is not array type

Tack i förväg.

Svar #1

unshift ändrar arrayen och returnerar den nya längden på arrayen, vilket är ett nummer, och det kan inte spridas. Din kod kokar ner till:

 [...state.uploadFiles.length]

Nu för att göra det på ett oföränderligt och korrekt sätt, använd inte unshift, lägg bara till elementet i arrayen innan du sprider den föregående versionen:

 [action.payload, ....state.uploadFiles]

Svar #2

Array#unshift returnerar arrayens nya längd.

Du behöver bara ta föremålet utan att sprida.

uploadedFiles: [(<fileActions.UploadFileSuccess>action).payload, ...state.uploadedFiles]

Om du vill uppdatera state.uploadedFiles, kan du unshift i förväg.

state.uploadedFiles.unshift((<fileActions.UploadFileSuccess>action).payload);

uploadedFiles: [...state.uploadedFiles]