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是的,你是对的,我已经更新了答案。