Si j'ai un tableau de chaînes, je peux utiliser la .join()
méthode pour obtenir une seule chaîne, avec chaque élément séparé par des virgules, comme ceci:
["Joe", "Kevin", "Peter"].join(", ") // => "Joe, Kevin, Peter"
J'ai un tableau d'objets et j'aimerais effectuer une opération similaire sur une valeur contenue en son sein; donc de
[
{name: "Joe", age: 22},
{name: "Kevin", age: 24},
{name: "Peter", age: 21}
]
effectuer la join
méthode uniquement sur l' name
attribut, pour obtenir la même sortie qu'auparavant.
Actuellement, j'ai la fonction suivante:
function joinObj(a, attr){
var out = [];
for (var i = 0; i < a.length; i++){
out.push(a[i][attr]);
}
return out.join(", ");
}
Il n'y a rien de mal à ce code, cela fonctionne, mais tout d'un coup, je suis passé d'une ligne de code simple et succincte à une fonction très impérative. Existe-t-il une manière plus succincte, idéalement plus fonctionnelle, d'écrire cela?
users.map(x => x.name).join(', ');
.
" ,".join([i.name for i in a])