Réduire tableau à une seule chaîne
Je voudrais utiliser le reduce
fonction au lieu de faire ceci:
var result = '';
authors.forEach(
function(author) {
result += author.name + ', ';
}
);
console.log(result);
Donc dans le tableau authors
il y a plusieurs noms. Maintenant, je veux construire une chaîne avec ce noms, séparés par des virgules (sauf le dernier).
var result = authors.reduce(function (author, index) {
return author + ' ';
}, '');
console.log(result);
pourquoi ne pas utiliser les rejoindre?
Si vous souhaitez utiliser de réduire ou d'une boucle pour une raison quelconque, vous devez ajouter une case pour voir si la boucle de courant de l'élément est la dernière ou pas. Mais il suffit d'utiliser la jointure, c'est une ligne de code pour obtenir ce que vous voulez.
Si vous souhaitez utiliser de réduire ou d'une boucle pour une raison quelconque, vous devez ajouter une case pour voir si la boucle de courant de l'élément est la dernière ou pas. Mais il suffit d'utiliser la jointure, c'est une ligne de code pour obtenir ce que vous voulez.
OriginalL'auteur user3142695 | 2016-07-08
Vous devez vous connecter pour publier un commentaire.
Une avalanche de réponses juste arrivé et voici une de plus!
La première option est d'utiliser le native js rejoindre méthode qui élimine la nécessité pour les réduire. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join
IMPORTANT - si vous êtes le tableau contient des objets, alors vous pouvez mapper avant de rejoindre:
ou, si vous êtes vraiment tiré sur l'utilisation de la réduire, assurez-vous d'utiliser la dernière valeur, de la valeur actuelle et de l'index lors du passage dans le rappel. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
IMPORTANT - encore une fois, si votre tableau contient des objets que vous voulez vous assurer que vous utilisez le nom de la propriété":
OriginalL'auteur abigwonderful
Bon, alors c'est un objet. Nous allons carte les noms d'abord, puis:
C'est trop compliqué
Je suis en désaccord. Je pense que c'est tout à fait logique. Vous souhaitez
join
laname
s. Pour obtenirname
s, vous utilisezmap
.map
est grande à la cueillette des propriétés des objets.var names = authors.map(function(author) { return author.name; }); var result = names.join(', ');
OriginalL'auteur Shilly
Je suis tombé sur cela aussi.
La plupart de ces réponses ne prendre en compte que l'auteurs nom, ce qui signifie que vous avez un tableau d'objets.
Une solution en ligne:
OriginalL'auteur Ronjark