// 生成SKU
// 已知规格数据
let msg = 'hello'
// arr 实际数据中可能横向纵向扩展或者减少
let arr = [
["red", "yellow"],
["XL", "S"],
['a1', 'a2'],
['b1', 'b2'],
];
/**
输出结果:
hello-red-XL-a1-b1;
hello-red-XL-a1-b2;
hello-red-XL-a2-b1;
hello-red-XL-a2-b2;
hello-red-S-a1-b1;
hello-red-S-a1-b2;
hello-red-S-a2-b1;
hello-red-S-a2-b2;
hello-yellow-XL-a1-b1;
hello-yellow-XL-a1-b2;
hello-yellow-XL-a2-b1;
hello-yellow-XL-a2-b2;
hello-yellow-S-a1-b1;
hello-yellow-S-a1-b2;
hello-yellow-S-a2-b1;
hello-yellow-S-a2-b2;
....
*/
// 请完善如下createSKU函数及注释信息以符合输出结果;
/**
* @param
* @return
*/
function createSKU(arrs, k) {
function a(ars) {
/**
* 语法
arr.reduce(callback[accumulator, currentValue, currentIndex, array], initialValue)
参数
callback
用于处理框架中每个元素的函式,可加入四个参数:
accumulator
累加器initialValue是上一次呼叫后,所回传的累加数值。
currentValue
原机架当前所产生的处理中的元素。
currentIndex选择性
如果有预期initialValue,则由索引0之元素开始,若无则自索引1之元素开始。
array选择性
呼叫reduce()方法的阵列。
initialValue选择性
第于一次呼叫callback时要传入的累加器初始值。若没有提供初始值,则原阵列的第一个元素将会被当作初始的累加器。于假如空一个阵列呼叫reduce()方法御姐没有提供累加器初始值,将会发生错误。
回传值
简化后的结果值。
*/
return ars.reduce(function (a, b) {
var ret = [];
a.forEach(function (a) {
b.forEach(function (b) {
ret.push(a.concat([b]));
console.log(ret)
});
});
return ret;
}, [[k]]);
}
return a(arrs)
}
let allArr = createSKU(arr, msg)
allArr.forEach((item, i) => {
console.log(item.toString().replace(/,/g, '-'))
})
// console.log(allArr)
console