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

发布于 2022-09-02 13:08:36 字数 261 浏览 30 评论 0

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

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

求大神支招

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

伴我心暖 2022-09-09 13:08:36
var data = ['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利',];
var result = [];
for(var i=0,len=data.length;i<len;i+=3){
   result.push(data.slice(i,i+3));
}
煮酒 2022-09-09 13:08:36
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);
留一抹残留的笑 2022-09-09 13:08:36
// 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...

我恋#小黄人 2022-09-09 13:08:36
var countries= ['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利'];
var chunkCountries =  _.chunk(countries,3);

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

import chunk from "lodash/chunk";
var chunk =require("lodash/chunk");
风蛊 2022-09-09 13:08:36
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);         
});
梨涡 2022-09-09 13:08:36
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);
绝不放开 2022-09-09 13:08:36

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']]

旧城烟雨 2022-09-09 13:08:36

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

晨曦÷微暖 2022-09-09 13:08:36
const chunk = (arr, counts) => {
  const cloneArr = [...arr];
  const result = [];
  while(cloneArr.length) {
    result.push(cloneArr.splice(0, counts));
  }
  return result;
}
披肩女神 2022-09-09 13:08:36
function sliceArr(data, n) {
    return data.reduce((arr, cur, index) => {
        const num = index % n; // 取余
        const currentArr = arr[arr.length - 1]; // 当前应该插入的数组
        
        if(num === 0) {
        arr.push([cur]);
        } else {
        currentArr.push(cur);
        arr[arr.length - 1] = currentArr;
        }
        
        return arr;
    }, []);
}

sliceArr([1,2,3,4,5], 2) // [[1,2], [3,4], [5]]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文