let list = [
{
name: '存储容量',
checkList: [
{
name: '8g',
id: 111325
},
{
name: '16g',
id: 111327
}],
},
{
name: '产品类型',
checkList: [
{
name: 'iphone',
id: 111303
},
{
name: 'vivo',
id: 111305
}],
},
{
name: '产品颜色',
checkList: [
{
name: '金',
id: 111303
},
{
name: '灰',
id: 111305
}],
},
{
name: '网络类型',
checkList: [{
name: '套餐一',
id: 111281
},
{
name: '套餐五',
id: 111281
}],
},
]
function arrp(arr){
//编辑原数组格式
if(arr[0].checkList){
arr=arr.map((item)=>{
return item=item.checkList
})
}
if(arr.length == 1){
//最终合并成一个
return arr[0];
}else{ //有两个子数组就合并
let arrySon = [];
//将组合放到新数组中
arr[0].forEach((item,index)=>{
arr[1].forEach((item1,index1)=>{
arrySon.push([].concat(arr[0][index],arr[1][index1]));
})
})
// 新数组并入原数组,去除合并的前两个数组
arr[0] = arrySon;
arr.splice(1,1);
// 递归
return arrp(arr);
}
}
console.log(arrp(list));
2
// ["颜色:白,类型:B", "颜色:白,类型:A", "颜色:黑,类型:B", "颜色:黑,类型:A"]
let final_arr = []
let arrs = []
let arr_copy = ''
let leg = ''
let array = [
{"skuName":"颜色","skuValues":[{"name":"白"},{"name":"黑"}]},
{"skuName":"类型","skuValues":[{"name":"B"},{"name":"A"}]},
{"skuName":"尺码","skuValues":[{"name":"S"},{"name":"L"}]},
]
array.forEach((item , index ) => {
let arr = []
item.skuValues.forEach((item_p , index_p) => {
let copy_array = ''
copy_array = item.skuName + ':' + item_p.name
arr.push(copy_array)
})
arrs.push(arr)
})
// console.log(arrs)
let result = arrs.reduce((acc, cur, index) => {
// console.log(acc , cur , index )
// 从第二项开始合并值
if (index > 0) {
let saveArr = []
acc.forEach(item => {
// console.log(item)
cur.forEach((subItem,sub_index) => {
// console.log('subItem' , subItem)
arr_copy = ''
arr_copy = item + ',' + subItem
saveArr.push(arr_copy)
})
// console.log(arr_copy)
})
acc = saveArr
}
return acc
}, arrs[0]) // 把数组的第一项传入作为初始值
if(array.length ==1) {
result = arrs
}
// console.log(result)
console.log(result)
3
let arr = [
[{
name: '红色',
value: '1'
}, {
name: '黑色',
value: '2'
}],
[{
name: 'X',
value: '1'
}, {
name: 'M',
value: '2'
}],
[{
name: '款式A',
value: '1'
}, {
name: '款式B',
value: '2'
}, {
name: '款式C',
value: '3'
}]
]
let list = arr.reduce((a, b) => {
var ret = [];
a.forEach(function(a) {
b.forEach(function(b) {
ret.push(a.concat([b]));
});
})
return ret;
}, [
[]
])
console.log(list);
4
(function() {
dwn = function(a) {
document.writeln(a + "")
};
//笛卡尔积
var Cartesian = function(a, b) {
var ret = [];
for (var i = 0; i
1665468453
查看更多评论