[英]How to remove all characters before specific character in array data
我有一个逗号分隔的字符串从Web服务提取到我的应用程序中,其中列出了用户的角色。 我需要将此字符串转换为数组,以便为最终结果进行处理。 我已经使用jQuery成功将字符串转换为数组,这是目标1。 我不知道该怎么做的目标2是采用新创建的数组,并删除任何包含'/'的数组项之前的所有字符,包括'/'。
我创建了一个简单的正在进行的JSFiddle: https ://jsfiddle.net/2Lfo4966/
我收到的字符串如下: ABCD,ABCD/Admin,ABCD/DataManagement,ABCD/XYZTeam,ABCD/DriverUsers,ABCD/RISC
上面字符串中的ABCD/
可以更改,可以是XYZ
, MNO
等。
要转换为数组,我需要执行以下操作:
var importUserRole = 'ABCD,ABCD/Admin,ABCD/DataManagement,ABCD/XYZTeam,ABCD/DriverUsers,ABCD/RISC';
var currentUserRole = importUserRole.split(',');
使用console.log
,我得到以下结果:
["ABCD", "ABCD/Admin", "ABCD/DataManagement", "ABCD/XYZTeam", "ABCD/DriverUsers", "ABCD/RISC"]
现在,我需要代码来查看数组的每个索引,如果/
存在,请删除/
之前的所有字符,包括/
。
我一直在寻找解决方案,但是我发现的JS解决方案是用于删除特定字符之后的字符,而不完全是我要做的事情。
您可以使用单一for
循环来遍历数组,然后split()
的价值观/
和使用检索结果数组的最后一个值pop()
。 尝试这个:
for (var i = 0; i < currentUserRole.length; i++) {
var data = currentUserRole[i].split('/');
currentUserRole[i] = data.pop();
}
在显式索引(例如[1]
pop()
上使用pop()
的好处是,如果字符串中没有斜杠或多个斜杠,则此代码不会中断。
您可以进一步使用map()
使其更简洁:
var importUserRole = 'ABCD,ABCD/Admin,ABCD/DataManagement,ABCD/XYZTeam,ABCD/DriverUsers,ABCD/RISC'; var currentUserRole = importUserRole.split(',').map(function(user) { return user.split('/').pop(); }); console.log(currentUserRole);
您可以遍历数组并执行以下字符串替换:
currentUserRole.forEach(function (role) {
role = role.replace(/(.*\/)/g, '');
});
$(document).ready(function(){
var A=['ABCD','ABCD/Admin','ABCD/DataManagement','ABCD/XYZTeam','ABCD/DriverUsers','ABCD/RISC'];
$.each(A,function(i,v){
if(v.indexOf('/')){
var e=v.split('/');
A[i]=e[e.length-1];
}
})
console.log(A);
});
您可以更换不需要的零件。
var array = ["ABCD", "ABCD/Admin", "ABCD/DataManagement", "ABCD/XYZTeam", "ABCD/DriverUsers", "ABCD/RISC"]; array = array.map(function (a) { return a.replace(/^.*\\//, ''); }); console.log(array);
var importUserRole = 'ABCD,ABCD/Admin,ABCD/DataManagement,ABCD/XYZTeam,ABCD/DriverUsers,ABCD/RISC';
var currentUserRole = importUserRole.split(',');
for(i=0;i<currentUserRole.length;i++ ){
result = currentUserRole[i].split('/');
if(result[1]){
console.log(result[1]+'-'+i);
}
else{
console.log(result[0]+'-'+i);
}
}
在控制台中,您将获得所需的结果和数组索引
您可以使用split方法,因为大家都已经知道字符串拆分方法 ,然后使用pop方法将删除数组的最后一个索引并返回值remove pop方法
var importUserRole = ABCD,ABCD/Admin,ABCD/DataManagement,ABCD/XYZTeam,ABCD/DriverUsers,ABCD/RISC';
var currentUserRole = importUserRole.split(',');
for(var x = 0; x < currentUserRole.length; x++;){
var data = currentUserRole[x].split('/');
currentUserRole[x] = data.pop();
}
这很长的路要走
您可以按照完成的操作对数组进行迭代,然后检查是否包含字符“ /”,然后使用indexOf并将字符串替换为javaScript中 “ /” 子字符串方法之后的字符串
var importUserRole = 'ABCD,ABCD/Admin,ABCD/DataManagement,ABCD/XYZTeam,ABCD/DriverUsers,ABCD/RISC';
var currentUserRole = importUserRole.split(',');
for(var x = 0; x < currentUserRole.length; x++){
if(currentUserRole[x].includes('/')){
var lastIndex = currentUserRole[x].indexOf('/');
currentUserRole[x] = currentUserRole[x].substr(lastIndex+1);
}
}
我会这样的;
var iur = 'ABCD,ABCD/Admin,ABCD/DataManagement,ABCD/XYZTeam,ABCD/DriverUsers,ABCD/RISC', arr = iur.split(",").map(s => s.split("/").pop()); console.log(arr);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.