【问题标题】:How to remove all characters before specific character in array data如何删除数组数据中特定字符之前的所有字符
【发布时间】:2016-10-15 02:53:03
【问题描述】:

我有一个逗号分隔的字符串从 Web 服务拉入我的应用程序,其中列出了用户的角​​色。我需要对这个字符串做的就是把它变成一个数组,这样我就可以处理它以获得我的最终结果。我已经成功地将字符串转换为带有 jQ​​uery 的数组,这是目标 #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 解决方案是用于删除特定字符之后的字符,而这并不是我完成这项工作所需要的。

【问题讨论】:

  • 里面有多个斜线吗?
  • 好问题。幸运的是,总会有 1 个斜线或没有斜线。永远不要超过 1。如果没有斜线,我需要保持原样。
  • 你可以用斜线分割并取最后一个元素。

标签: javascript jquery arrays arraylist


【解决方案1】:

您可以使用单个 for 循环遍历数组,然后通过 split() 获取 / 的值,并使用 pop() 检索结果数组的最后一个值。试试这个:

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

Example fiddle

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

【讨论】:

  • 谢谢罗里。这个解决方案是最简单、最简单、最直接的。它最适合我。
  • 没问题,很乐意提供帮助。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:
    $(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);
    });
    

    【讨论】:

    • 感谢您在杜尔加的帖子。它运作良好。有一种解决方案对我来说更容易在我的代码中使用。但我赞成你的回答,因为它有效。
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:
      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);
        }
      }
      

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

      【讨论】:

        【解决方案6】:

        我愿意这样做;

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

        【讨论】:

          【解决方案7】:

          您可以使用众所周知的 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);      
             }
           }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-04-16
            • 2015-09-05
            • 2015-01-26
            • 1970-01-01
            • 2016-07-06
            • 2010-10-28
            相关资源
            最近更新 更多