是否有任何简单的方法可以以某种方式(从右到左)在javascript中合并、调整和合并多个多维数组?

是否有任何简单的方法可以以某种方式(从右到左)在javascript中合并、调整和合并多个多维数组?,javascript,jquery,arrays,multidimensional-array,underscore.js,Javascript,Jquery,Arrays,Multidimensional Array,Underscore.js,我需要一种简单的方法,以某种方式(从右到左)在javascript中合并、调整和合并多个多维数组 我从underline.js lib中找到了reduceRight函数,但我不确定如何轻松实现它,因为它需要递归完成。您可以使用迭代和递归方法来处理具有可变长度的零件 此版本现在可用于嵌套数组,并在高级中展开它 函数组合(数组){ 功能c(部分,索引){ var-temp=数组[索引]; if(Array.isArray(temp)&temp.some(函数(a){return Array.isA

我需要一种简单的方法,以某种方式(从右到左)在javascript中合并、调整和合并多个多维数组


我从underline.js lib中找到了reduceRight函数,但我不确定如何轻松实现它,因为它需要递归完成。

您可以使用迭代和递归方法来处理具有可变长度的零件

此版本现在可用于嵌套数组,并在高级中展开它

函数组合(数组){
功能c(部分,索引){
var-temp=数组[索引];
if(Array.isArray(temp)&temp.some(函数(a){return Array.isArray(a);})){
temp=combine(数组[index].map(函数(a){return array.isArray(a)→a:[a];}));
}
每小时温度(功能(a){
var p=部分混凝土(a);
if(p.length==array.length){
r、 推(p.join(“”));
回来
}
c(p,指数+1);
});
}
var r=[];
c([],0);
返回r;
}
变量数组=[
['.class1','.class2'],
['.class3',
['.class4','.class5'],
['.class6']
]
],
结果=组合(数组);
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
您可以使用迭代和递归的方法来处理具有不同长度的零件

此版本现在可用于嵌套数组,并在高级中展开它

函数组合(数组){
功能c(部分,索引){
var-temp=数组[索引];
if(Array.isArray(temp)&temp.some(函数(a){return Array.isArray(a);})){
temp=combine(数组[index].map(函数(a){return array.isArray(a)→a:[a];}));
}
每小时温度(功能(a){
var p=部分混凝土(a);
if(p.length==array.length){
r、 推(p.join(“”));
回来
}
c(p,指数+1);
});
}
var r=[];
c([],0);
返回r;
}
变量数组=[
['.class1','.class2'],
['.class3',
['.class4','.class5'],
['.class6']
]
],
结果=组合(数组);
控制台日志(结果)
.as console wrapper{max height:100%!important;top:0;}
如果您愿意使用下划线(imo)的更好版本,可以在多维数组的每个元素上使用
flattedeep
()非常简单地表达:

function combine(list) {
  const arrays = list.map(_.flattenDeep);
  return arrays.map((a) => a.join('');
}
如果您愿意使用下划线(imo)的更好版本,可以在多维数组的每个元素上使用
flattedeep
()非常简单地表达:

function combine(list) {
  const arrays = list.map(_.flattenDeep);
  return arrays.map((a) => a.join('');
}
var数据=['.class1'、'.class2']、['.class3'、['.class4'、'.class5']、['.class6']];
函数笛卡尔(a,b){//返回两个数组a和b的笛卡尔乘积
如果(!a.length)返回b;//如果a为空,则乘积的结果为b
如果(!b.length)返回a;//如果b为空,则产品为a
返回a.reduce((res,ae)=>(b.forEach(be=>res.push(ae+be)),res),[];//非空a和非空b的乘积
}
函数combos(arr){//获取一个数组arr并从其嵌套数组中返回组合
if(arr.every(e=>!Array.isArray(e)))返回arr;//如果数组不包含任何嵌套数组,则按原样返回它
返回arr.reduce((acc,e)=>{//否则返回其所有元素的笛卡尔乘积
e=Array.isArray(e)?组合(e):[e];//如果当前元素是数组,则获取其组合,否则,将其包装在数组中
返回笛卡尔(acc,e);//获取先前元素的笛卡尔乘积和此元素e的组合
}, []);
}
日志(组合(数据))
var数据=['.class1'、'.class2']、['.class3'、['.class4'、'.class5']、['.class6']];
函数笛卡尔(a,b){//返回两个数组a和b的笛卡尔乘积
如果(!a.length)返回b;//如果a为空,则乘积的结果为b
如果(!b.length)返回a;//如果b为空,则产品为a
返回a.reduce((res,ae)=>(b.forEach(be=>res.push(ae+be)),res),[];//非空a和非空b的乘积
}
函数combos(arr){//获取一个数组arr并从其嵌套数组中返回组合
if(arr.every(e=>!Array.isArray(e)))返回arr;//如果数组不包含任何嵌套数组,则按原样返回它
返回arr.reduce((acc,e)=>{//否则返回其所有元素的笛卡尔乘积
e=Array.isArray(e)?组合(e):[e];//如果当前元素是数组,则获取其组合,否则,将其包装在数组中
返回笛卡尔(acc,e);//获取先前元素的笛卡尔乘积和此元素e的组合
}, []);
}

日志(组合(数据))[['.class1','.class2'],['.class3',['.class4','.class5'],['class6']
。class4和class5应该嵌套在包含class3的数组中,这使得这个问题更难解决solve@mhodges,我得到的结果与op要求的结果相同。假设只有一个
'.class'
3有什么错?嵌套数据的结果可能与请求的结果不同。“合并、调整和合并多个多维数组”您没有使用任何多维数组,并且当您