如何移除JavaScript中因属性为空产生的字符串多余逗号?
解决JavaScript对象属性为空时生成字符串的多余逗号问题
原代码拼接属性字符串时,只要遇到空值属性,就会出现连续的多余逗号(比如, , ),要解决这个问题,核心思路是先收集所有非空的属性值,再统一用逗号分隔,避免直接拼接带来的空值占位问题。
修改后的代码如下:
const arr = [{ "id": "324101", "role": "Authorized Redistributor (AR)", "license": "Target", "dataConcept": "Agreement · L1, Asset · L1, Account · L1", "managedGeography": "International · L2", "managedSegment": "Core Citi Businesses [L2]", "enterpriseProduct": "Borrowing Products · L2" }, { "id": "324230", "role": "Authorized Redistributor (AR)", "license": "", "dataConcept": "Document · L1, Compliance · L1", "managedGeography": "", "managedSegment": "", "enterpriseProduct": "", "checked": true, "checkBoxPatched": true } ] const adsList = arr.map(selectedObj => { if (selectedObj.checked) { // 把需要拼接的属性放到数组里,过滤空字符串后再用逗号连接 return [ selectedObj.role, selectedObj.license, selectedObj.dataConcept, selectedObj.managedGeography, selectedObj.managedSegment ].filter(prop => prop.trim() !== '').join(', '); } else { return ''; } }).filter(str => str.length !== 0).join(';\n\n'); console.log(adsList);
关键改动说明
- 把原本直接拼接的属性值放入一个数组中
- 使用
filter(prop => prop.trim() !== '')过滤掉空字符串(包括全空格的情况) - 最后用
join(', ')把非空属性值用单个逗号分隔,自然避免了多余逗号
运行后,第二个对象的输出会是:Authorized Redistributor (AR), Document · L1, Compliance · L1,完全符合期望;第一个对象的所有非空属性也会正常用逗号分隔,没有多余符号。
内容的提问来源于stack exchange,提问作者Mitul Panchal
相关产品推荐
相关产品推荐

