2017-10-19 1 views
0

J'essaye de créer une fonction qui retourne un nouvel objet avec une paire clé-valeur. Je reçois la clé et la valeur du premier et du dernier élément d'un tableau. Je peux obtenir la fonction pour retourner les éléments qui composeront la paire clé-valeur, mais dès que j'enveloppe les éléments du tableau dans des accolades pour retourner un objet via la fonction, cela ne fonctionne pas. Quel est le problème?Comment créer un objet avec une clé et une valeur données?

// Create an array 
var names = ["Apples", "Oranges", "Yummy", "Candy", "Plop"]; 

// Return an object with a key–value pair from the first and last element of an array 
function firstLast(array) { 
    var obj = { 
    array[0] + ": " + "'" + array[array.length - 1] + "'"; 
    }; 
    return obj; 
} 

console.log(firstLast(names)); 

Répondre

4

Cette syntaxe n'est pas valide. Ce dont vous avez besoin est ceci:

var obj = { 
    [array[0]]: array[array.length - 1] 
}; 

Ceci utilise computed properties.

Une alternative serait la suivante:

var obj = {}; 
obj[array[0]] = array[array.length - 1]; 
+0

j'ai appris STH aujourd'hui, le '{[var]: 1}' partie. Trop cool. – wscourge

+0

Je vois! Je vous remercie. Je suis complètement ignorant de cette syntaxe. –

1

Vous pouvez utiliser la notation carrée de crochets pour affecter la valeur, mais mon post initial contenait la même réponse que @ l'alternative de Xufox. J'ai donc pensé que je présenterais une approche différente qui utilise les arguments qui sont passés dans la fonction et construit l'objet retourné à partir de décalage et de popping à partir de ce tableau. Juste un autre wy de faire le même travail.

var names = ["Apples", "Oranges", "Yummy", "Candy", "Plop"]; 
 

 
function firstLast(array) { 
 
    return {[arguments[0].shift()]: arguments[0].pop()}; 
 
} 
 

 
console.log(firstLast(names));