繁体   English   中英

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

[英]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/可以更改,可以是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解决方案是用于删除特定字符之后的字符,而不完全是我要做的事情。

您可以使用单一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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM