如何为每一行创建多维数组?

时间:2015-09-16 08:56:51

标签: javascript arrays multidimensional-array

对于我使用网格布局的网站。我想要的是将每行的所有项目存储在一行中。

我有一个调用arrWrap = [];的整体数组。现在我想为每一行创建一个新数组,每次我存储4个项目。因此,应该在连续的第三个项目之后创建一个新数组。

我如何实现这一目标? 我在这个项目中使用Javascript。

   var arrPos = [];

   for (var i = 0; i < elements.length; ++i) { 

            arrPos[i] = i;
            console.dir(arrPos[i]);

            if (arrPos[i] > 3) {
                alert(arrPos[i]);

            };
    }

3 个答案:

答案 0 :(得分:1)

var arrWrap = [];
var steps = 4;
for (var i = 0; i < elements.length; i=i+steps) { 
    arrWrap.push(elements.slice(i,i+steps));
}

答案 1 :(得分:0)

请使用以下代码:

 <a href="javascript:void(0);" onclick="window.location='http://merseytribe.co.uk/membership-register.html'" title="Sign up today for one free month trial at our gold club">Join</a>

答案 2 :(得分:0)

此提案以Array.prototype.reduce为特色,并提供两种解决方案:

  1. 由连续元素dataGroupedA
  2. 分组
    [
        [  0,  1,  2 ],
        [  3,  4,  5 ],
        [  6,  7,  8 ],
        [  9, 10, 11 ],
        [ 12, 13, 14 ]
    ]
    
    1. 由第5个元素dataGroupedB
    2. 分组
      [
          [ 0, 5, 10 ],
          [ 1, 6, 11 ],
          [ 2, 7, 12 ],
          [ 3, 8, 13 ],
          [ 4, 9, 14 ]
      ]
      

      index的计算是重要的部分。其余的是标准的默认赋值并推送实际元素。

      &#13;
      &#13;
      var data = Array.apply(Array, { length: 15 }).map(function (_, i) { return i; }),
          dataGroupedA = data.reduce(function (r, a, i) {
              var index = i / 3 | 0;
              r[index] = r[index] || [];
              r[index].push(a);
              return r;
          }, []),
          dataGroupedB = data.reduce(function (r, a, i) {
              var index = i % 5;
              r[index] = r[index] || [];
              r[index].push(a);
              return r;
          }, []);
      
      document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');
      document.write('<pre>' + JSON.stringify(dataGroupedA, 0, 4) + '</pre>');
      document.write('<pre>' + JSON.stringify(dataGroupedB, 0, 4) + '</pre>');
      &#13;
      &#13;
      &#13;