let un_trimmed = ["push", " pop", "shift", " "];
filtered = un_trimmed.filter(function (el) {
return el.trim();
});
// 输出:
["push", " pop", "shift"]
(注意“pop”的未修剪值)
// 预期输出:
["push", "pop", "shift"]
(注意“pop”的修剪值)
我做错了什么?
答案 0 :(得分:2)
.filter
的作用是返回一个新数组,其中包含来自旧数组的元素,这些元素无需修改即可通过回调测试。您需要一个 .map
后跟一个 .filter
,因为您都需要更改某些值并完全删除某些值:
let un_trimmed = ["push", " pop", "shift", " "];
const filtered = un_trimmed
.map(str => str.trim())
.filter(str => str);
console.log(filtered);
答案 1 :(得分:2)
Array.filter
only 使用返回值来决定是否在输出中包含输入值;它不会修改输入值。为此,请使用 map
然后使用 filter
:
let un_trimmed = ["push", " pop", "shift", " "];
filtered = un_trimmed.map(function (el) {
return el.trim();
}).filter(Boolean);
console.log(filtered);