有这样一个数组:
['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利',]
现在希望让每3个分成一个数组,像这样:
[['法国','澳大利亚','智利'],['新西兰','西班牙','加拿大'],['阿根廷','美国','0'],['国产','波多黎各','英国'],['比利时','德国','意大利'],['意大利'],]
求大神支招
有这样一个数组:
['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利',]
现在希望让每3个分成一个数组,像这样:
[['法国','澳大利亚','智利'],['新西兰','西班牙','加拿大'],['阿根廷','美国','0'],['国产','波多黎各','英国'],['比利时','德国','意大利'],['意大利'],]
求大神支招
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);
// 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);
var countries= ['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各','英国','比利时','德国','意大利','意大利'];
var chunkCountries = _.chunk(countries,3);
使用lodash的chunk方法,如果不想使用整个类库,可以单独引入这个方法
import chunk from "lodash/chunk";
var chunk =require("lodash/chunk");
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);
});
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);
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']]
const chunk = (arr, counts) => {
const cloneArr = [...arr];
const result = [];
while(cloneArr.length) {
result.push(cloneArr.splice(0, counts));
}
return result;
}
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]]
8 回答4.6k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决