![](/img/trans.png)
[英]JavaScript map(function) return this.value - finding the last element in the array
[英]Javascript - map(function) return this.value - comma on wrong side
我使用此代码列出数组中的所有检查值:
var healthSafety = $('input:checkbox[name=health_safety]:checked').map(function() {
return this.value + (' ');
}).get();
但问题是,分隔它们的逗号落错了地方。
我得到类似的东西:
三重梯,天窗,通往屋顶的通道
但我想要这样的东西:
三重梯子、天窗、通往屋顶的通道。
我试着把:
return this.value + (' ');
但它没有帮助
有什么办法可以解决吗?
您依赖于隐式join
,它在每个项目后放置一个逗号,但您的项目(一旦更新它们)以空格结尾。
使用您想要的分隔符进行显式join
:
var healthSafety = $('input:checkbox[name=health_safety]:checked')
.map(function() { return this.value; })
.get()
.join(", ");
也许
const healthSafety = $('input:checkbox[name=health_safety]:checked')
.get()
.map(({value}) => value)
.join(", ");
在您的问题中,您正在查看数组的默认序列化,它仅使用单字符,
作为分隔符。 您正在尝试通过将空格添加到值来为分隔添加空格。
但是您不希望这些值包含空格:这将导致在字符串的开头或结尾处有一个额外的空格。 相反,你要序列与两个字符分隔阵列,
(逗号+空格)。 您可以使用join
执行此序列化:
$('...').map(function() {
return this.value;
}).get().join(", ");
您没有发布有问题的代码,而是在某个地方对数组进行了字符串化,该数组会自动用逗号连接所有元素:
console.log(['a', 'b', 'c']); //-> "a,b,c"
在您的情况下,您在每个值的末尾添加一个空格,因此您最终会得到如下内容:
console.log(['value1 ', 'value2 ', 'value3 ']); //-> "value1 ,value2 ,value3 "
您想要做的是删除当前拥有的额外空间,然后在数组上调用.join(', ')
- 注意逗号后的额外空间:
console.log(['value1', 'value2', 'value3'].join(', ')); //-> "value1, value2, value3"
您可以使用任何字符串加入数组:
console.log(['value1', 'value2', 'value3'].join('.:::.')); //-> "value1.:::.value2.:::.value3"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.