如何删除数组数据中特定字符之前的所有字符

时间:2016-06-14 11:36:32

标签: javascript jquery arrays arraylist

我有一个以逗号分隔的字符串从Web服务中提取到我的应用程序中,该服务列出了用户的角​​色。我需要对这个字符串做什么就把它变成一个数组,然后我可以处理它以获得最终结果。我已成功将字符串转换为带有jQuery的数组,即目标#1。目标#2,我不知道该怎么做,是采用新创建的数组,并删除所有包含' /'的数组项之前的所有字符,包括' /& #39;

我创建了一个简单的在制品JSFiddle:https://jsfiddle.net/2Lfo4966/

我收到的字符串如下: ABCD,ABCD/Admin,ABCD/DataManagement,ABCD/XYZTeam,ABCD/DriverUsers,ABCD/RISC

上面字符串中的

ABCD/可以更改,可以是XYZMNO等。

要转换为数组,我已完成以下操作:

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解决方案是在特定字符后删除字符,并不是我需要完成的工作。

7 个答案:

答案 0 :(得分:2)

您可以使用单个split()循环遍历数组,然后/使用pop()的值,并使用for (var i = 0; i < currentUserRole.length; i++) { var data = currentUserRole[i].split('/'); currentUserRole[i] = data.pop(); } 检索生成的数组的最后一个值。试试这个:

pop()

Example fiddle

使用[1]优于显式索引(例如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);

使其更加简洁

PluralizingTableNameConvention

答案 1 :(得分:1)

您可以遍历数组并执行此字符串替换:

currentUserRole.forEach(function (role) {
  role = role.replace(/(.*\/)/g, '');
});

答案 2 :(得分:1)

$(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);
});

答案 3 :(得分:0)

您可以更换不需要的部分。

tr

答案 4 :(得分:0)

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);
  }
}

在控制台中,您将获得所需的结果和数组索引

答案 5 :(得分:0)

您可以使用split方法,因为您已经准备好了解string split method,然后使用pop方法删除数组的最后一个索引并返回值remove pop method

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并在'/'之后取代字符串 substring method in 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);      
   }
 }

答案 6 :(得分:0)

我会喜欢这个;

&#13;
&#13;
var iur = 'ABCD,ABCD/Admin,ABCD/DataManagement,ABCD/XYZTeam,ABCD/DriverUsers,ABCD/RISC',
    arr = iur.split(",").map(s => s.split("/").pop());
console.log(arr);
&#13;
&#13;
&#13;

相关问题