首页 > 解决方案 > 数组过滤器方法不返回修剪值

问题描述

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

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

我究竟做错了什么 ?

标签: javascript

解决方案


它的作用是.filter返回一个新数组,其中包含旧数组中的元素,这些元素在没有修改的情况下通过了回调的测试。您需要 a.map后跟 a .filter,因为您都需要更改某些值并完全删除某些值:

let un_trimmed = ["push", " pop", "shift", "  "];
const filtered = un_trimmed
  .map(str => str.trim())
  .filter(str => str);
console.log(filtered);


推荐阅读