繁体   English   中英

Javascript - 地图(函数)返回 this.value - 逗号在错误的一边

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM