const arr = [
{
"id": "753311",
"role": "System Of Record (SOR)",
"license": "Target",
"DC": "Client · L2 (Inactive), Account · L1",
"managedGeography": "North America · L2, International · L2",
"managedSegment": "Institutional Clients Group [L3], Discontinued Ops [L2]",
"checked": true,
"checkBoxPatched": true
},
{
"id": "752872",
"role": "Authorized Redistributor (AR)",
"license": "Interim",
"DC": "Holding · L1, Document · L1, Compliance · L1",
"managedGeography": "Unspecified",
"managedSegment": "Unspecified",
"checked": true,
"checkBoxPatched": true
},
{
"id": "752583",
"role": "Authorized Redistributor (AR)",
"license": "Target",
"DC": "Agreement · L1, Asset · L1, Activity · L1, Account · L1",
"managedGeography": "Unspecified",
"managedSegment": "Unspecified"
}
]
let adsList = arr.map(selectedObj => {
if (selectedObj.checked) {
return selectedObj.role + ", " + selectedObj.license + ", " + selectedObj.DC + ", " + selectedObj.managedGeography + ", " + selectedObj.managedSegment + ";\n"
} else {
return '';
}
}).filter((str) => str.length !== 0).join('\n');
console.log(adsList)
嗨,我有一个数组,我基本上返回字符串,如果对象包含检查的属性,并用分号分隔它们,但需要删除最后一个。
我不确定如何从输出中删除unspecified
后面的最后一个分号,在这种情况下,任何线索都将非常有用。
4条答案
按热度按时间s1ag04yj1#
不要在
map
调用中添加分号,但在最后的join
调用中将其用作分隔符。不是问题,但是:
Boolean
作为过滤器回调函数。.checked
为false时,您可以返回.checked
,而不是返回''
,这允许您返回一个没有if..else
的表达式。cu6pst1q2#
您可以更新代码以使用
;\n
连接数组,如果您希望保留中间的额外行,则使用;\n\n
2w2cym1i3#
可以使用slice()方法从结果字符串中删除最后一个字符:
vsaztqbk4#
可以使用以下正则表达式:
若要在字符串末尾找到分号,然后将其替换为空字符串。
正则表达式具有以下含义:
;
匹配文字分号(\s|\\n)*
匹配一个或多白色或\n
文字$
匹配字符串的结尾