php代码
public function group($attr){
if(count($attr)==1){
return $attr[array_keys($attr)[0]]; //树最底层的叶节点直接返回
}
$start_tree=$attr[array_keys($attr)[0]]; //递归取出每一层的所有可能与下层拼接
unset($attr[array_keys($attr)[0]]);
$tree=$this->group($attr);
foreach ($start_tree as $k=>$v){
foreach ($tree as $r=>$l){
$arr[]= array_merge([$v], is_array($l)?$l:[$l]);
}
}
return $arr;
}
$arr = [[1,2,3], [4,5,6], [7,8], [10,11]];
$this->group($arr)
js代码
function isArray(obj){
if(typeof obj=="object" && obj.constructor===Array){
return true;
}
return false;
}
function group(arr){
if(arr.length === 1){
return arr.shift(); //树最底层的叶节点直接返回
}
let start_tree = arr.shift(); //递归取出每一层的所有可能与下层拼接
let tree= group(arr);
let skuArr = []
start_tree.forEach((item, index) => {
tree.forEach((item_t, index_t) => {
item_t = isArray(item_t)?item_t:[item_t]
skuArr.push([...[item], ...item_t]);
})
})
return skuArr;
}
let arr = [[1,2,3], [4,5,6], [7,8], [10,11]];
group(arr)