I would like to join
the items in a string array that contain values and keep the empty items.
// example array const sentenceSplit = ["There", "is", "a", "", "", "cat", "in", "", "three"];
For the above example, I would like to achieve the following outcome:
["There is a", "", "", "cat in", "", "three"]
I tried using reduce
, but couldn’t figure out the solution.
const result = sentenceSplit.reduce((acc, val) => { // can't figure out logic });
Advertisement
Answer
You can use reduce
and check whether the last produced entry or the current string is empty. If so, the current string should be a separate entry, otherwise it should be concatenated to the previous entry:
const sentenceSplit = ["There", "is", "a", "", "", "cat", "in", "", "three"]; let result = sentenceSplit.reduce((acc, str) => { if (str && acc[acc.length-1]) { acc[acc.length-1] += " " + str; } else { acc.push(str); } return acc; }, []); console.log(result);