加入数组而不删除空格

时间:2018-04-12 09:22:05

标签: javascript ecmascript-6

我对加入数组有一点疑问。我有一系列字母,类似的东西:

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

我不想在数组中加入元素以获得类似的输出:

let array = ['ab','c']
你能帮帮我吗?我正在搜索,但我发现的一切都是关于从数组或字符串中删除空格:(

3 个答案:

答案 0 :(得分:3)

这些方面的东西:

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);

它确实假设数组中至少有一个字符串,最后一个元素不是空字符串,并且不会有两个相邻的空字符串。如果有疑虑,请根据需要进行调整。

答案 1 :(得分:1)

您可以结合使用Array#mapArray#joinString#Split来实现您的目标。

在这里,我使用space作为分隔符,但您可以使用您在阵列中不使用的任何内容。

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

let result = array.map(e => e.length ? e : ' ').join('').split(' ');
console.log(result);

答案 2 :(得分:1)

您可以使用reduce()方法创建新数组,使用一个变量在空字符串上递增。



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)