【问题标题】:Convert a 1D array to 2D array [duplicate]将一维数组转换为二维数组[重复]
【发布时间】:2014-04-23 06:18:13
【问题描述】:

我正在开发一个程序,我必须将文本文件中的值读取到一维数组中。我已成功获取该一维数组中的数字。

m1=[1,2,3,4,5,6,7,8,9]

但我希望数组是

m1=[[1,2,3],[4,5,6],[7,8,9]]

【问题讨论】:

  • 分割它们的标准是什么?
  • @brbcoding 子数组必须包含 3 个元素
  • @epascarello 是的,谢谢!.. 成功了 :)

标签: javascript arrays


【解决方案1】:

您可以使用此代码:

const arr = [1,2,3,4,5,6,7,8,9];
    
const newArr = [];
while(arr.length) newArr.push(arr.splice(0,3));
    
console.log(newArr);

http://jsfiddle.net/JbL3p/

【讨论】:

    【解决方案2】:

    Array.prototype.reshape = function(rows, cols) {
      var copy = this.slice(0); // Copy all elements.
      this.length = 0; // Clear out existing array.
    
      for (var r = 0; r < rows; r++) {
        var row = [];
        for (var c = 0; c < cols; c++) {
          var i = r * cols + c;
          if (i < copy.length) {
            row.push(copy[i]);
          }
        }
        this.push(row);
      }
    };
    
    m1 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    
    m1.reshape(3, 3); // Reshape array in-place.
    
    console.log(m1);
    .as-console-wrapper { top:0; max-height:100% !important; }

    输出:

    [
      [1, 2, 3],
      [4, 5, 6],
      [7, 8, 9]
    ]
    

    JSFiddle DEMO

    【讨论】:

    • 如何推广这种“重塑”功能,使其可以将一维数组重塑为二维以上的数组? IE。 (1x24) 数组可以重新整形为 (2x12)、或 (2x3x4) 或 (2x2x2x3) 等。
    【解决方案3】:

    我想你可以做这样的事情......只需以块的形式迭代数组。

    m1=[1,2,3,4,5,6,7,8,9];
    
    // array = input array
    // part = size of the chunk
    function splitArray(array, part) {
        var tmp = [];
        for(var i = 0; i < array.length; i += part) {
            tmp.push(array.slice(i, i + part));
        }
        return tmp;
    }
    
    console.log(splitArray(m1, 3)); // [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
    

    显然没有错误检查,但您可以轻松添加。

    DEMO

    【讨论】:

      【解决方案4】:

      所以有很多方法可以做同样的事情:

      var m = [1, 2, 3, 4, 5, 6, 7, 8, 9];
      var n = [];
      var i = 0;
      for (l = m.length + 1; (i + 3) < l; i += 3) {
          n.push(m.slice(i, i + 3));
      }
      // n will be the new array with the subarrays
      

      以上只是其中之一。

      【讨论】:

        猜你喜欢
        • 2013-01-27
        • 1970-01-01
        • 1970-01-01
        • 2020-05-06
        • 2020-09-10
        • 2021-09-25
        • 2016-02-18
        • 2018-02-19
        相关资源
        最近更新 更多