let un_trimmed = ["push", " pop", "shift", " "];
filtered = un_trimmed.filter(function (el) {
return el.trim();
});
// output :
["push", " pop", "shift"] (notice the un-trimmed value of ” pop”)
// Expected output :
["push", "pop", "shift"] (notice the trimmed value of “pop”)
What am I doing wrong ?
Advertisement
Answer
Array.filter only uses the return value to decide whether to include the input value in the output or not; it does not modify the input value. To do that, use map then filter:
let un_trimmed = ["push", " pop", "shift", " "];
filtered = un_trimmed.map(function (el) {
return el.trim();
}).filter(Boolean);
console.log(filtered);