3 votes

Array reduce ne fonctionne pas avec une longueur de 1. Comment puis-je gérer ce cas ?

J'ai une situation

let values = [{value: "one"}, {value: "two"}];
let joinedValues = values.reduce(function(p, n) {return `${p.value},
${n.value}`});

let values2 = [{value: "one"}];
let joinedValues2 = values2.reduce(function(p, n) {return `${p.value}, ${n.value}`});

console.log(joinedValues);
console.log(joinedValues2);

Lorsque le tableau length > 1 ce moment-là, il itère et me renvoie les valeurs jointes, mais lorsque length === 1 il n'itérera pas du tout et retournera directement l'objet de valeur. Donc, comment puis-je obtenir une chaîne séparée par des virgules à partir du tableau de l'exemple ci-dessus ? en utilisant uniquement la réduction .

Note : Je ne peux pas prédire la valeur initiale qui est dynamique. .

0voto

Jaewon Points 76

Vous n'avez pas passé le 2ème paramètre pour reduce .

Les codes devraient être les suivants,

let values = [{value: "one"}, {value: "two"}];
let joinedValues = values.reduce(function(p, n) {return `${p}, ${n.value}`}, '');

let values2 = [{value: "one"}];
let joinedValues2 = values2.reduce(function(p, n) {return `${p}, ${n.value}`}, '');

console.log(joinedValues);
console.log(joinedValues2);

et la fonction in reduce reçoit 2 paramètres. Le premier est pour la valeur précédente, et le second est pour l'élément courant du tableau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X