如何在生成CSS选择器字符串时为数组元素添加分隔逗号?
给生成的CSS选择器添加逗号分隔的解决方案
嘿,这个问题很好解决!你现在的代码是直接把选择器字符串生硬拼接在一起,所以才会出现没有逗号分隔的情况。我们换个思路,先把所有有效的选择器存入一个数组,最后再用逗号加空格把它们连接起来,既能避免多余的逗号,代码逻辑也更清晰。
方法一:基于原循环的修改
把原来的字符串变量换成数组,收集完有效选择器后再用join()方法拼接:
var filters = ['all',null,'men','bi',null]; var selectors = []; // 用数组存储每个有效的选择器 var i; for (i = 0; i < filters.length; i++) { if(filters[i]!= null){ // 将生成的选择器推入数组 selectors.push("p[data-st!="+filters[i]+"]"); } } // 用逗号加空格连接数组中的所有元素 var text = selectors.join(', '); console.log(text); // 输出:p[data-st!=all], p[data-st!=men], p[data-st!=bi]
方法二:更简洁的ES6写法
如果你的环境支持ES6语法,用filter和map方法能让代码更简洁易读:
var filters = ['all',null,'men','bi',null]; var text = filters .filter(item => item !== null) // 先过滤掉null值 .map(item => `p[data-st!=${item}]`) // 把每个有效项转成选择器字符串 .join(', '); // 最后用逗号分隔连接 console.log(text); // 输出:p[data-st!=all], p[data-st!=men], p[data-st!=bi]
为什么这样做更靠谱?
用数组收集再拼接的好处很明显:
- 自动避免末尾出现多余的逗号(
join()只会在元素之间添加分隔符) - 代码逻辑更直观,后期修改或扩展也更方便
内容的提问来源于stack exchange,提问作者Behseini
相关产品推荐
相关产品推荐

