【问题标题】:splitting array elements in javascript split function在javascript拆分函数中拆分数组元素
【发布时间】:2020-05-20 18:43:33
【问题描述】:

嗨,我有以下数组元素

var 数组 =["a.READ","b.CREATE"]

我正在尝试根据“。”拆分元素。使用javascript拆分方法

下面是我的代码

var array1=new Array();
var array2 = new Array();

for (var i = 0; i < array .length; i++) {
  array1.push(array [i].split("."));
}
console.log("this is the array1 finish  ----"+array1)

我收到的输出是

[["a","READ"],["b","CREATE"]]

我想要的预期输出是

array1 =["a","b"]

array2=["READ","CREATE"]

我被困在这里,任何关于此的解决方案都非常有帮助

【问题讨论】:

    标签: javascript arrays split


    【解决方案1】:

    您需要添加到 array2 并使用 String.prototype.split 返回的返回数组中的两个元素 - 即 0 是点的左侧,1 是点的右侧。

    var array = ["a.READ", "b.CREATE"]
    var array1 = []; // better to define using [] instead of new Array();
    var array2 = [];
    
    for (var i = 0; i < array.length; i++) {
        var split = array[i].split(".");  // just split once
        array1.push(split[0]); // before the dot
        array2.push(split[1]); // after the dot
    }
    console.log("array1", array1);
    console.log("array2", array2);
    

    【讨论】:

    • 只是建议在console.log("array1" , array1); 中使用, 这将显示对象
    【解决方案2】:

    我们将从用于二维数组的通用 transpose 函数开始:

    function transpose(arr1) {               // to transpose a 2d array
        return arr1[0].map(                  // take the first sub-array and map
            function(_, i) {                 // each element into
                return arr1.map(             // an array which maps
                    function(col) {          // each subarray into
                        return col[i];       // the corresponding elt value
                    }
                );
            }
        );
    }
    

    现在解决办法就是

    transpose(                        // transpose the two-dimensional array
        array.map(                    // created by taking the array and mapping
            function(e) {             // each element "a.READ" into
                return e.split('.');  // an array created by splitting it on '.'
            }
        )
    )
    

    【讨论】:

      【解决方案3】:

      您没有向 array2 添加任何内容。请正确使用索引,如下所示:

      var array1=new Array();
      var array2 = new Array();
      
      for (var i = 0; i < array .length; i++) {
        array1.push(array [i].split(".")[0]);
        array2.push(array [i].split(".")[1]);
      }
      

      【讨论】:

        【解决方案4】:

        你可以这样做

        var array =["a.READ","b.CREATE"];
        var arr1= [], arr2= [];
        
        array.forEach(function(item,index,arr){
          item.split('.').forEach(function(item,index,arr){
            if(index % 2 === 0){
              arr1.push(item);
            }else{
              arr2.push(item);
            }
          });      
        });
        
        console.log(arr1);
        console.log(arr2);
        

        DEMO

        【讨论】:

          【解决方案5】:

          我想这有点多余,但是 split 方法实际上返回和数组。尽管您的代码已关闭,但您并未修改 array2.请考虑以下内容。

          var array = [ "a.READ" , "b.CREATE" ]
            , array1 = []
            , array2 = []
            // cache array length
            , len = array.length;
          
          for ( var i = 0; i < len; i++ ) {
              // the split method returns a new array
              // so we will cache the array
              // push element 0 to array1
              // push element 1 to array2
              var newArr = array[ i ].split('.');
              array1.push( newArr[ 0 ] );
              array2.push( newArr[ 1 ] );
          }
          
          console.log( 'array1: ', array1 );
          console.log( 'array2: ', array2 );
          

          【讨论】:

            【解决方案6】:

            使用这个:

            for (var i = 0; i < array .length; i++) {
              var parts = array[i].split('.');
              array1.push(parts[0]);
              array2.push(parts[1]);
            }
            

            【讨论】:

              【解决方案7】:

              您尚未为 Array2 分配任何值。如下图所示。

              var array1=[];
              var array2 = [];
              
              for (var i = 0; i < array .length; i++) {
                  var arrayTemp=[];
                  arrayTemp.push(array [i].split("."));
                  array1.push(arrayTemp[0]);          
                  array2.push(arrayTemp[1]);
              }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-09-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-11-06
                • 1970-01-01
                • 2011-10-09
                • 1970-01-01
                相关资源
                最近更新 更多