循环遍历n个项目的数组

时间:2017-10-23 21:34:38

标签: javascript arrays

我有这个简单的JS数组:

var myStringArray = ['item1','item2','item3','item4','item5','item6','item7','item8','item9','item10','item11','item12','item13','item14','item15','item16','item17'];

我想格式化数组中的数据,使其看起来像这样:

[
    ["item1","item2","item3"],
    ["item4","item5","item6"],
    ["item7","item8","item9"],
    ["item10","item11","item12"],
    ["item13","item14","item15"],
    ["item16","item17"]
]

换行并不重要 - 但这就是我想要达到的格式。

我到目前为止:

var myCols = 3;
var myStringArray = ['item1','item2','item3','item4','item5','item6','item7','item8','item9','item10','item11','item12','item13','item14','item15','item16','item17'];  
var arrLen = myStringArray.length;      
var output = "[";

for (var i=0, l=myStringArray.length; i<l; i++) {

  var this_loop = i+1;
  var this_item = myStringArray[i];
  var this_mod = (i % myCols) + 1;

  console.log(this_item + '__' + i + '______' + this_mod);

    if (this_mod == 1) {
        output += '[';
    }

    if (this_mod == 3 && this_loop < arrLen) {
        output += '],';
    }

    if (this_loop === arrLen) {
        output += ']';
    }

}   

output += ']';

console.log (myStringArray);
console.log (arrLen);
console.log (output);

我希望能够控制&#34;列的数量&#34; - 或每组方括号的项目,因此myCols变量。

上面的输出生成正确的方括号序列(之后我添加的换行符):

[
    [],
    [],
    [],
    [],
    [],
    []
]

我正在努力解决的问题是制定逻辑,用数组中的项目序列填充每组方括号。

任何建议都非常感谢。

由于

1 个答案:

答案 0 :(得分:1)

试试这个:

var newArr = [];
var myStringArray = ['item1','item2','item3','item4','item5','item6','item7','item8','item9','item10','item11','item12','item13','item14','item15','item16','item17'];

for (var i = 0; i < myStringArray.length; i+=3) {
    newArr.push(
        myStringArray.slice(i, i+3)
    );
}

console.log(JSON.stringify(newArr, null, 4));
相关问题