如何从包含以分号分隔的审阅者列表的strReviewers字符串中删除文本(例如["88664734","88639280","88676217"]),然后使用JAVASCRIPT或JQUERY重新连接整个字符串?
我得到一个动态字符串(StrReviewers),它包含用逗号分隔的多个用户记录:
如果我传递一个ID数组,我需要删除整个用户记录.例如["88664734","88639280","88676217"]
var strReviewers = "88664734*,*Andrew Farmer*,*19042*,**,*,19013,19017,19042,19043,19051,*;*88639280*,*Sally Hopewell*,*19042*,**,*,19013,19017,19042,19043,*;*88686221*,*Jonathan Rees*,*19042*,**,*,19013,19017,19042,19043,19060,*;*88676217*,*James Wason*,*19042*,**,*,19013,19017,19042,19043,*;*";
StrReviewers包含用分号分隔的用户记录,每个用户记录用,分隔.
每条记录包含1个用户,其形式为UserID,然后依次是名称、角色ID、txtSpeciality,然后是角色列表.
/*
88664734*,*Andrew Farmer*,*19042*,**,*,19013,19017,19042,19043,19051,*;
*88639280*,*Sally Hopewell*,*19042*,**,*,19013,19017,19042,19043,*;
*88686221*,*Jonathan Rees*,*19042*,**,*,19013,19017,19042,19043,19060,*;
*88676217*,*James Wason*,*19042*,**,*,19013,19017,19042,19043,*;
*/
我已经使用以下代码完成了这项工作,但我想知道是否可以通过其他更容易的方法来实现这一点?
var strReviewers = "88664734*,*Andrew Farmer*,*19042*,**,*,19013,19017,19042,19043,19051,*;*88639280*,*Sally Hopewell*,*19042*,**,*,19013,19017,19042,19043,*;*88686221*,*Jonathan Rees*,*19042*,**,*,19013,19017,19042,19043,19060,*;*88676217*,*James Wason*,*19042*,**,*,19013,19017,19042,19043,*;*";
function removeReviewerByID(ids = []) {
return strReviewers
.split(";")
.map(item => item.split("*,*"))
.filter(item => item[0] !== "*")
.map(item => ({
userid:item[0],
name:item[1],
roleid:item[2],
txtSpeciality:item[3],
rolelist:item[4]
}))
.filter(item => (!ids.includes(item["userid"]) && !ids.includes(item["userid"].replace(/\*/g, ''))))
.map(item => ({
record: item["userid"].concat("*,*").concat(item["name"]).concat("*,*").concat(item["roleid"]).concat("*,*").concat(item["txtSpeciality"]).concat("*,*").concat(item["rolelist"]).concat(";")
}))
.reduce((accumulator, item) => {
return accumulator.concat(item["record"]);
}, "")
}
console.log(removeReviewerByID(["88664734","88639280","88676217"]));