Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 即使条件不为true,map函数也会返回项_Javascript - Fatal编程技术网

Javascript 即使条件不为true,map函数也会返回项

Javascript 即使条件不为true,map函数也会返回项,javascript,Javascript,这是我的密码: //input = aaaaaaa, ddd, , asdsad, newUser = users .split(',') .map(item => { item = item.trim(); if(item.length > 0) { return item; } }).join(); //output = aaaaaaa,ddd,,asdsad, 所以我

这是我的密码:

//input = aaaaaaa,                ddd,            ,    
 asdsad,

newUser =
users
  .split(',')
  .map(item => {
    item = item.trim();
    if(item.length > 0) {
      return item;
    }
}).join();

//output = aaaaaaa,ddd,,asdsad,
所以我的问题是,为什么从map函数返回长度为0的项?我错过了什么明显的东西吗

//编辑:

是的,现在它删除空字符串,但是空格呢?我的结果仍然是这样的:

asdasdasd,aa

我想要:


asdasdasd,aa

map()
返回的数组的
长度将始终等于原始数组的长度。如果要根据条件删除数组元素,请使用
filter()

在特定情况下,可以先从字符串中删除空格,然后使用单个逗号删除两个或多个相邻的逗号

let input='aaaaaaaaa,ddd,,asdsad,'
设res=input.replace(/\s+/g',).replace(/,{2,}/,',');

console.log(res)
您可以使用字符串替换和正则表达式删除所有空白

let input='aaaaaaaaa,ddd,,asdsad';
让newData=input.replace(//g',);;
控制台日志(新数据)
根据

map()方法创建一个新数组,其结果是对调用数组中的每个元素调用提供的函数

所以使用map可以对每个元素执行一些操作,不能忽略任何元素

如果您想基于某个条件省略某个元素,则使用

对于您的情况,您可以首先使用
map()
修剪所有元素,然后使用
filter()
删除长度不为
>0
的元素。
var input=“aaaaaaaaa,ddd,,asdsad”;
变量输出=输入。拆分(',')。映射(项=>{
item=item.trim();
退货项目;
}).filter(项目=>{
返回项长度>0;
}).join();

控制台日志(输出)
你把
map
filter
搞混了。使用map,你可以更改值,使用filter,你可以省略项。请发布可编译的代码。我没有否决,但我认为作者不希望逗号之间的空字符串成为最终结果的一部分。我还认为他希望删除多余的空格。像
map
字符串,然后
filter
它。作者在这篇文章中不是很清楚。是的,你的第一个解决方案很好,但是有两个连续的逗号而不是一个(因为它们之间的空白需要删除)。@KévinBibollet是的,你是对的,我已经更新了答案。