2016-06-14 38 views
1

我有一个逗号分隔的字符串从Web服务中拉入我的应用程序,该服务列出了用户的角​​色。我需要做的是将这个字符串转换为一个数组,然后我可以处理它以获得最终结果。我已经成功地使用jQuery将字符串转换为数组,这是目标#1。目标#2,我不知道该怎么做,是采用新创建的数组,并删除任何包含'/'的数组项之前的所有字符,包括'/'。如何删除阵列数据中特定字符前的所有字符

我创建了一个简单的工作进行中的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解决方案是用于删除特定字符后的字符,并不完全是我需要完成的。

+0

是否有不止一个斜杠里面? –

+0

好问题。幸运的是,总是会有1个斜线或者没有斜线。不要超过1.如果没有斜线,我需要保持原样。 – Pegues

+1

你可以在斜杠上分割并取最后一个元素。 –

回答

1

您可以使用一个for环路由/去通过阵列,然后split()的价值观和检索的最后一个值使用pop()。试试这个:

for (var i = 0; i < currentUserRole.length; i++) { 
    var data = currentUserRole[i].split('/'); 
    currentUserRole[i] = data.pop(); 
} 

Example fiddle

使用pop()了一个明确的指标的好处,如[1]是,如果有在字符串中没有或多个斜线此代码将不会打破。

+0

谢谢罗里。这个解决方案是最简单,最简单,最简单的。它对我最好。 – Pegues

+0

没问题,很乐意帮忙。 –

1

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

currentUserRole.forEach(function (role) { 
    role = role.replace(/(.*\/)/g, ''); 
}); 
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); 
}); 
+0

谢谢你的帖子杜尔加。它运作良好。有一种解决方案对我来说在我的代码中使用起来更容易一些。但我提高了你的答案,因为它有效。 – Pegues

0

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

var array = ["ABCD", "ABCD/Admin", "ABCD/DataManagement", "ABCD/XYZTeam", "ABCD/DriverUsers", "ABCD/RISC"]; 
 
array = array.map(function (a) { 
 
    return a.replace(/^.*\//, ''); 
 
}); 
 

 
console.log(array);

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

在控制台,你会得到需要的结果和数组索引

0

您可以使用split方法,你都准备好知道string split method,然后使用弹出方法将删除阵列的最后一个索引并返回值删除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

后substact字符串数组
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);  
    } 
} 
0

我会这样做;

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

相关问题