How do you split an array into array pairs in JavaScript?

后端 未结 14 1624
广开言路
广开言路 2020-12-08 09:49

I want to split an array into pairs of arrays.

var arr = [2, 3, 4, 5, 6, 4, 3, 5, 5]

would be

var newarr = [
    [2, 3],
           


        
14条回答
  •  盖世英雄少女心
    2020-12-08 10:31

    Here's a good generic solution:

    function splitInto(array, size, inplace) {
        var output, i, group;
    
        if (inplace) {
            output = array;
    
            for (i = 0; i < array.length; i++) {
                group = array.splice(i, size);
    
                output.splice(i, 0, group);
            }
        } else {
            output = [];
    
            for (i = 0; i < array.length; i += size) {
                output.push(array.slice(i, size + i));
            }
        }
    
        return output;
    }
    

    For your case, you can call it like this:

    var arr= [2,3,4,5,6,4,3,5,5];
    var newarr = splitInto(arr, 2);
    

    The inplace argument determines whether the operation is done in-place or not.

    Here's a demo below:

    function splitInto(array, size, inplace) {
        var output, i, group;
    
        if (inplace) {
            output = array;
    
            for (i = 0; i < array.length; i++) {
                group = array.splice(i, size);
    
                output.splice(i, 0, group);
            }
        } else {
            output = [];
    
            for (i = 0; i < array.length; i += size) {
                output.push(array.slice(i, size + i));
            }
        }
    
        return output;
    }
    
    var arr= [2,3,4,5,6,4,3,5,5];
    var newarr = splitInto(arr, 2);
    
    disp(newarr);
    
    // or we can do it in-place...
    splitInto(arr, 3, true);
    
    disp(arr);
    
    function disp(array) {  
      var json = JSON.stringify(array);
    
      var text = document.createTextNode(json);
      var pre = document.createElement('pre');
    
      pre.appendChild(text);
      document.body.appendChild(pre);
    }

提交回复
热议问题