如何将数组值切两个

时间:2015-07-02 14:21:20

标签: javascript arrays

我有一个值为[A,B,C,D,E.....]的javascript数组,我需要使用以下语法进行拆分:

[ [A, B], [C, D], [E, F] ]

依此类推(它总是一对)。

所以它应该是一个返回字符串的循环。

我试图这样做,这几乎是我想要的:

text = '['+array[0]+','+array[1]+']';
for (index = 2; index < array.length; index++) {
    text += '['+array[index]+','+array[index+1]+']';
    console.log(text);
}

我得到了

[10:00,15:45][18:30,20:00]
[10:00,15:45][18:30,20:00][20:00,undefined]

相反,我只需要得到这个:

[10:00,15:45][18:30,20:00]

3 个答案:

答案 0 :(得分:3)

可以尝试将文本设为实际数组并推送对,如此

var orig=['A','B','C','D','E','F'];
var text=[];
for (index = 0; index < orig.length-1; index+=2) {
    text.push([orig[index],orig[index+1]]);
    console.log(JSON.stringify(text));
}

答案 1 :(得分:0)

以下内容:

var groupArray = function(arr){
    var groupedArray = [];
    for(var i = 0, len = arr.length; i < len; i += 2){
        groupedArray.push([arr[i], arr[i + 1]]);
    }
    return groupedArray;
};

这显然仅适用于具有偶数元素的数组。如果你需要这个函数来处理具有奇数个元素的数组,那么你需要为此进行编辑。

答案 2 :(得分:0)

这是一种用于对数组元素进行分组的小方法。如果您只关心对,那么您可以检查内部数组的长度是否为2。

if (!Array.prototype.group) {
  Array.prototype.group = function (length) {
    var a = this.slice(), r = [];
    length = length || 1;
    
    while (a.length > 0) {
      r.push(a.splice(0, length));
    }
    
    return r;
  };
}

var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'].group(2);

console.log(arr);

如果您要丢弃与预期长度不匹配的最终组,请使用此版本。

if (!Array.prototype.group) {
  Array.prototype.group = function (length, req) {
    var a = this.slice(), r = [], h;
    length = length || 1;
    
    while (a.length > 0) {
      h = a.splice(0, length);
      
      if (!req || h.length === length) {
        r.push(h);
      }
    }
    
    return r;
  };
}

var arr = ['an', 'odd', 'number', 'of', 'elements'].group(2, true);

console.log(arr)