let result = { splitSymbol: ''}freeCombination([1,2,3,4], result);function freeCombination(arr, result, before, next) { var objectResult = false var splitSymbol = '-' if (Object.prototype.toString.call(result) === '[object Object]') { splitSymbol = result.splitSymbol !== undefined ? result.splitSymbol : '-' if (result.list == undefined) { result.list = [] } objectResult = true } if (next) { before += `${next}${splitSymbol}` } if (!before) { before = '' } if (!result) { result = [] } arr.forEach((item, index) => { if (arr.length > 1) { let children = JSON.parse(JSON.stringify(arr)); children.splice(index, 1) freeCombination(children, result, before, item) } else { objectResult ? result.list.push(before += `${item}${splitSymbol}`) : result.push(before += `${item}${splitSymbol}`) } })}console.log(result)
let suitList = [[['A_1_1','A_1_2'],"A_2","A_3","A_4","A_5"],[['B_1_1','B_1_2'],"B_2","B_3","B_4","B_5","B_6"], ["C_1","C_2","C_3","C_4","C_5"]];let result = [];suitName(suitList,{ result: []})function suitName(arr) { let brr = [] arr.forEach((item, index) => { if (typeof item === 'string') { if (result) { result.forEach(a => { brr.push(`${a},${item}`) }) } else { brr.push(`${item}`) } if (index === arr.length - 1) { result = brr; } } else { if (result && !result.length) { result = arr[index - 1] } suitName(item) } })}console.log(JSON.stringify(result))