J'ai une petite question sur la jonction de tableaux. J'ai un tableau de lettres, quelque chose comme ça:

let array = ['a','b','','c']

Je ne veux pas joindre des éléments dans un tableau pour avoir une sortie comme ça:

let array = ['ab','c']

Pouvez-vous m'aider? Je cherchais mais tout ce que j'ai trouvé concernait la suppression des espaces blancs des tableaux ou des chaînes :(

-4
Gnex 12 avril 2018 à 12:22

3 réponses

Meilleure réponse

Vous pouvez utiliser une combinaison de {{X0} }, {{X1} } et {{X2} } pour réaliser ce que vous voulez.

Ici, j'ai utilisé un space comme délimiteur, mais vous pouvez utiliser tout ce que vous n'utilisez pas dans votre tableau.

let array = ['a','b','','c'];

let result = array.map(e => e.length ? e : ' ').join('').split(' ');
console.log(result);
1
Zenoo 12 avril 2018 à 09:27

Vous pouvez utiliser la méthode reduce() pour créer un nouveau tableau et une variable à incrémenter sur une chaîne vide.

let array = ['a', 'b', '', 'c', 'd', 'e', '', '', '', 'f', '', 'g'];

let i = 0;
let result = array.reduce((r, e, j, arr) => {
  r[i] = (r[i] || '') + e;
  if (!e && arr[j - 1]) i++
  return r;
}, [])

console.log(result)
1
Nenad Vracar 12 avril 2018 à 09:38

Quelque chose dans ce sens:

let array = ['a', 'b', '', 'c'];

let res = array.reduce((res, s) => {
    if (s.length) {
        res[res.length - 1] += s;
    } else {
        res.push('');
    }
    return res;
}, ['']);

console.log(res);

Il fait l'hypothèse qu'il y aura au moins une chaîne dans le tableau, que le dernier élément ne sera pas une chaîne vide et qu'il n'y aura pas deux chaînes vides adjacentes. Ajustez si nécessaire si cela vous inquiète.

3
deceze 12 avril 2018 à 09:29