数组过滤器方法不返回修剪后的值

时间:2021-02-14 03:38:18

标签: javascript

let un_trimmed = ["push", " pop", "shift", "  "];
filtered = un_trimmed.filter(function (el) {
  return el.trim();
});

// 输出:
["push", " pop", "shift"](注意“pop”的未修剪值)
// 预期输出:
["push", "pop", "shift"](注意“pop”的修剪值)

我做错了什么?

2 个答案:

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

相关问题