2016-06-14 83 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);

相關問題