前段时间又写了一个商城后台,又要写关于商品规格这一块的,正好,这次有时间,就对这段代码进行优化,也百度了不少,参考了一段Python代码
6.11更新,修复规格只有一个的bug
话就不多说,我感觉这代码挺简洁的,但实现的功能还是不差的,
// 接收一个list[['白色', '红色','黑色'],['S','M','L'],['6+128', '8+128','L'],...]
selectArr (list) {
function sortTable(arr, item) {
let brr = [];
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < item.length; j++) {
if (typeof arr[i] == 'object') {
brr.push([...arr[i],item[j]])
}else{
brr.push([arr[i],item[j]])
}
}
}
return brr;
}
if (list.length>1) {
return list.reduce(sortTable)
}else{
let arr = []
list[0].forEach(item=>{
arr.push([item])
})
return arr
}
}
//输出:['白色', 'S','6+128']...(其中省略25个规格数组).....['黑色', 'L','L']
这段代码主要用的是reduce来实现这个功能,reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。 即reduce接收函数的第一个参数是上一次return的值,item是数组的当前项。