Je travaillais juste avec des objets JavaScript et j'ai trouvé ce que je n'arrive pas à comprendre. J'ai créé un tableau avec peu de valeurs et j'ai essayé de convertir ce tableau en objet en utilisant spread et new en JavaScript, mais pour ma surprise, seule la première valeur du tableau a été placée dans l'objet avec son type.
Je n'ai pas besoin de quoi exactement se passe en arrière-plan
Number {1970}
Sortie:
let array = [1970,1,1] let object = new Object(array) console.log(object)
J'attendais un objet {1970, 1, 1} mais la sortie réelle est Numéro {1970}
4 Réponses :
La chose la plus proche que vous puissiez faire est:
{0: 1970, 1:1, 2:1}
Ce qui vous donnera le résultat:
const object = {...array}
Oui. Pouvez-vous me dire ce qui ne va pas avec mon approche
En général, vous devez éviter d'utiliser le constructeur littéral new Object
. Si vous lui passez un tableau, vous retournerez simplement le tableau.
lorsque vous utilisez l'opérateur de propagation const obj = {... array}
vous dites: Hey, faites-moi un objet avec une propriété pour chaque élément de ce tableau, et ce nom de propriété sera l'index de l'élément
Vous pouvez essayer avec Object.assign ()
let array = [1970,1,1]; let object = Object.assign({}, array); console.log(object);
pour convertir un tableau en objet, utilisez Object.assign
let array = [1970,1,1]; var obj = new Object(); Array.prototype.push.apply(obj, array); console.log(obj);
ou vous pouvez remplir l'objet avec les éléments du tableau
Object.assign({},[1970,1,1])
Pouvez-vous me dire ce qui se passe avec mon approche pourquoi toutes les autres valeurs s'attendent à ce que la première soit rejetée
vous ne pouvez pas utiliser array comme constructeur pour Object, pour corriger votre approche, vous devez utiliser let obj = new Object (); Array.prototype.push.apply (obj, tableau);
Cela fonctionne dans Chrome (version 75).
Vérifiez le code suivant, si vous vous attendez au comportement suivant.
CODE:
let array = [1970,1,1]; let obj = {}, i = 0; for(var element in array) obj[i++] = array[element]; console.log(obj);
Je ne peux pas reproduire cela dans Chrome 75.0.
" essayant de convertir ce tableau en objet " - quoi? Un objet tableau est déjà un objet. Alors, que voulez-vous réellement accomplir?