首頁  >  問答  >  主體

javascript - js将一位数组分割成每三个一组

有这样一个数组:
['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利',]

现在希望让每3个分成一个数组,像这样:
[['法国','澳大利亚','智利'],['新西兰','西班牙','加拿大'],['阿根廷','美国','0'],['国产','波多黎各','英国'],['比利时','德国','意大利'],['意大利'],]

求大神支招

PHP中文网PHP中文网2768 天前654

全部回覆(8)我來回復

  • 高洛峰

    高洛峰2017-04-11 09:11:42

    var data = ['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利',];
    var result = [];
    for(var i=0,len=data.length;i<len;i+=3){
       result.push(data.slice(i,i+3));
    }
    

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-11 09:11:42

    function group(array, subGroupLength) {
        var index = 0;
        var newArray = [];
    
        while(index < array.length) {
            newArray.push(array.slice(index, index += subGroupLength));
        }
    
        return newArray;
    }
    
    var countries = [];
    var groupedCountries = group(countries, 3);

    回覆
    0
  • 高洛峰

    高洛峰2017-04-11 09:11:42

    var countries= ['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利'];
    var chunkCountries =  _.chunk(countries,3);
    

    使用lodash的chunk方法,如果不想使用整个类库,可以单独引入这个方法

    import chunk from "lodash/chunk";
    var chunk =require("lodash/chunk");

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-11 09:11:42

    var arr = ['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利'],
        newArr = [],
        b;
    arr.forEach(function(item, index, array) {
        var a = Math.floor(index / 3);
        if (b !== a) {
            b = a;
            newArr[a] = new Array();
        }
        newArr[a].push(item);         
    });

    回覆
    0
  • 黄舟

    黄舟2017-04-11 09:11:42

    var a = ['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利'];
    var b = [];
    var result = [];
    var k = 0;
    
    for(var i = 0; i<a.length; ++i){
        if(i%3 == 0){
            b = [];
            for(var j = 0; j<3; ++j){
                if(a[i+j] == undefined){
                    continue;
                } else{
                    b[j] = a[i+j];
                }
            }
            result[k] = b;
            k++;
        }
        
    }
    console.log(result);

    回覆
    0
  • 怪我咯

    怪我咯2017-04-11 09:11:42

    // define
    var chunk = function(arr, num){
          num = num*1 || 1;
          var ret = [];
          arr.forEach(function(item, i){
            if(i % num === 0){
              ret.push([]);
            }
            ret[ret.length - 1].push(item);
          });
          console.log(ret);
          return ret;
        };
    // run
    var source = ['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利'];
    chunk(source, 3);

    http://codepen.io/interjc/pen/yOvqjq?edi...

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-11 09:11:42

    var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];

    function formatArray(arr) {

    var begin = 0,
        end = begin + 3;
    var result = [],
        arrLength = arr.length;
    
    if (end >= arrLength) return result.push(arr);
    
    while (end < arrLength) {
    
        result.push(arr.slice(begin, end));
    
        begin = begin + 3;
        end = begin + 3;
        if (end > arrLength) {
            end = arrLength;
            result.push(arr.slice(begin, end));
            break;
        }
    }
    
    return result;

    }

    formatArray(arr); // [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j']]

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-11 09:11:42

    非常感谢这么多大侠的帮助,谢谢,非常感谢!

    回覆
    0
  • 取消回覆