结构一
doCombination (arr) {
var count = arr.length - 1;
var tmp = [];
var totalArr = [];
function doCombinationCallback (arr, index) {
for (let o of arr[index]) {
tmp[index] = o;
if (index < count) {
doCombinationCallback(arr, index + 1);
} else {
totalArr.push(tmp);
}
let oldTmp = tmp;
tmp = [];
for (let i of oldTmp) {
tmp.push(i);
}
}
return totalArr;
}
return doCombinationCallback(arr, 0)
},
//测试数据
let arr = [
[1,2,3],
['a','s'],
['Z','X']
]
最终结果
结构二
permutation (source) {
const arr = Object.keys(source);
const result = [];
const _result = {};
const convert = (arr, index) => {
for (let i = 0; i < arr[index].length; i++) {
if (source[arr[index]][i]) {
_result[arr[index]] = source[arr[index]][i]
if (index === arr.length - 1) {
result.push(JSON.parse(JSON.stringify(_result)));
} else {
convert(arr, index + 1);
}
}
}
};
convert(arr, 0);
return result;
},
//测试数据
let arr = {
name: ['张三', '李四', '王二'],
age: [18, 16],
sex: ['男', '女']
}
最终结果展示