普通二维数组转笛卡尔乘积,可用于生成sku
var data = [
['A', 'B', 'C'],
['a', 'b', 'c'],
['1', '2', '3']
];
像这样的一组数据,有27钟组合,结果形如:
['A', 'a', '1']
['A', 'a', '2']
['A', 'a', '3']
['A', 'b', '1']
['A', 'b', '2']
['A', 'b', '3']
...
JS实现:
function decare (raw) {
var index = 0
var res = []
var cur = []
var fn = function (data, index) {
index += 1
for (var i = 0, len = data.length; i < len; i++) {
if (index == 1) cur = []
cur[index] = data[i]
if (raw[index] != null) {
fn(raw[index], index, cur)
} else {
res.push(cur.slice())
}
}
}
fn(raw[index], index)
return res
}
使用:
var data = [
['A', 'B', 'C'],
['a', 'b', 'c'],
['1', '2', '3']
];
console.log(decare(data))