我对加入数组有一点疑问。我有一系列字母,类似的东西:
let array = ['a','b','','c']
我不想在数组中加入元素以获得类似的输出:
let array = ['ab','c']
你能帮帮我吗?我正在搜索,但我发现的一切都是关于从数组或字符串中删除空格:(
答案 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#map
,Array#join
和String#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)