Javascript 使嵌套数组对数组元素进行分组
我有一个数组:Javascript 使嵌套数组对数组元素进行分组,javascript,arrays,Javascript,Arrays,我有一个数组: arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]; 然后我想把4个元素组成一组。 每次迭代,这个数组都必须被修改,直到它得到最终的面 步骤1: arr = [[1,2,3,4],5,6,7,8,9,10,11,12,13,14]; 步骤2: arr = [[1,2,3,4],[5,6,7,8],9,10,11,12,13,14]; 步骤3: arr = [[1,2,3,4],[5,6,7,8],[9,10,11,12],13,14]; ar
arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14];
然后我想把4个元素组成一组。
每次迭代,这个数组都必须被修改,直到它得到最终的面
步骤1:
arr = [[1,2,3,4],5,6,7,8,9,10,11,12,13,14];
步骤2:
arr = [[1,2,3,4],[5,6,7,8],9,10,11,12,13,14];
步骤3:
arr = [[1,2,3,4],[5,6,7,8],[9,10,11,12],13,14];
arr = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14]];
步骤3:
arr = [[1,2,3,4],[5,6,7,8],[9,10,11,12],13,14];
arr = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14]];
这怎么可能
我试过这个:
var array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
var i,j,temparray,chunk = 4;
for (i=0,j=array.length; i<j; i+=chunk) {
temparray = array.slice(i,i+chunk);
console.log(temparray);
}
var数组=[1,2,3,4,5,6,7,8,9,10,11,12,13,14]
变量i,j,temparray,chunk=4;
对于(i=0,j=array.length;i,lodash方法将为您执行此操作
result = _.chunk(arr, 4);
lodash方法将为您实现这一点
result = _.chunk(arr, 4);
可以拼接阵列,直到长度小于上次插入的索引
var数组=[1,2,3,4,5,6,7,8,9,10,11,12,13,14],
i=0;
while(i }
您可以拼接阵列,直到长度小于上次插入的索引
var数组=[1,2,3,4,5,6,7,8,9,10,11,12,13,14],
i=0;
while(i
函数chunkArray(myArray,chunk\u size){
var指数=0;
var arrayllength=myArray.length;
var tempArray=[];
对于(索引=0;索引
函数chunkArray(myArray,chunk\u size){
var指数=0;
var arrayllength=myArray.length;
var tempArray=[];
对于(索引=0;索引
lodash可能比我的实现具有更好的性能,但是如果您希望使用vanilla javascript来实现这一点,那么您可以这样做(尽管还有许多其他方法):
var arr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14];
var newArr=arr.reduce((acc、val、idx)=>{
如果(idx%4==0){
acc.push([]);
}
附件[acc.length-1]。推送(val)
返回acc
}, [])
console.log(newArr);
lodash可能比我的实现具有更好的性能,但是如果您希望使用香草javascript来实现这一点,那么您可以这样做(尽管还有许多其他方法):
var arr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14];
var newArr=arr.reduce((acc、val、idx)=>{
如果(idx%4==0){
acc.push([]);
}
附件[acc.length-1]。推送(val)
返回acc
}, [])
console.log(newArr);
只需将其推送到生成的数组:
const chunk = 4, result = []
for (var i = 0, j = array.length; i < j; i += chunk) {
result.push(array.slice(i,i + chunk));
}
const chunk=4,result=[]
for(var i=0,j=array.length;i
只需将其推送到结果数组:
const chunk = 4, result = []
for (var i = 0, j = array.length; i < j; i += chunk) {
result.push(array.slice(i,i + chunk));
}
const chunk=4,result=[]
for(var i=0,j=array.length;i
使用方法
const arr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14],
newArr=arr.reduce((会计科目、项目、索引)=>{
如果((索引)%4==0){
附件推送([项目]);
}否则{
附件[附件长度-1]。推送(项目);
}
返回acc;
}, []);
console.log(newArr);//[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14]
使用方法
const arr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14],
newArr=arr.reduce((会计科目、项目、索引)=>{
如果((索引)%4==0){
附件推送([项目]);
}否则{
附件[附件长度-1]。推送(项目);
}
返回acc;
}, []);
console.log(newArr);//[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14]
我想如果我使用递归调用添加一个解决方案也会很有趣,快乐编码
在这里测试一下
函数拆分(arr、offset、res){
//停止条件(偏移量超过阵列长度)
如果(偏移>阵列长度)
返回res;
//切成4片榆树
res.push(arr.slice(偏移量,偏移量+4));
//递归
返回分割(arr,偏移+4,res);
}
var res=分割([1,2,3,4,5,6,7,8,9,10,11,12,13,14],0,[]);
console.log(res);
我想如果我使用递归调用添加一个解决方案也会很有趣,快乐编码
在这里测试一下
函数拆分(arr、offset、res){
//停止条件(偏移量超过阵列长度)
如果(偏移>阵列长度)
返回res;
//切成4片榆树
res.push(arr.slice(偏移量,偏移量+4));
//递归
返回分割(arr,偏移+4,res);
}
var res=分割([1,2,3,4,5,6,7,8,9,10,11,12,13,14],0,[]);
console.log(res);
您尝试过什么吗?请提供您已经尝试过的代码,我们很乐意帮助您使其工作。您的4步方法是什么?现在是一步(在接受的答案中)?如果是,请更改问题。@NinaScholz每4个元素必须拆分并保存在一个数组中,因此左元素少于4个,我们必须保存它以供以后使用。您尝试过什么吗?请提供您已经尝试过的代码,我们很乐意帮助您使其工作。您的4步方法是什么?现在是一步(在接受的答复中)?如果是这样,请更改问题。@NinaScholz每4个元素必须拆分并保存在一个数组中,因此左元素少于4个,我们必须保存它以供以后使用。VanillaJS胜过一切!我确信lodash会比我的代码快,但在对jsfiddle进行多次检查后,我的速度是lodash的3-5倍!!!:)只有具备写作技能和经验,VanillaJS才能击败一切