Estoy tratando de combinar elementos en una matriz, con cada elemento debajo. Debe hacer un conjunto del carácter actual y cada carácter debajo de él, y recorrer iterativamente la matriz. Por ejemplo, si tengo una matriz como esta:
var myArray = ['A','B','C','D']Me gustaría una salida como esta:
AB AC AD BC BD CD
El código que tengo me está acercando, pero me está costando descifrar el resto. Esto es lo que tengo hasta ahora:
var myArray = ['A', 'B', 'C', 'D'] var sql_parts = [] var string = ""; for (var i = 0; i < myArray.length; i++) { recurse_function(string, i) } console.log(sql_parts) function recurse_function(string_val, count) { if ((myArray.length - count) == 0) { return string_val; } else { string_val += myArray[count] sql_parts.push(string_val) recurse_function(string_val, count + 1) } }Pero esto produce:
["A", "AB", "ABC", "ABCD", "B", "BC", "BCD", "C", "CD", "D"]
No creo que necesite recursar en este caso particular. Simplemente puede combinar el elemento actual con los siguientes con flatMap :
['A','B','C','D'].flatMap((x, i, xs) => xs.slice(i+1).map(y => x+y)); //=> ["AB", "AC", "AD", "BC", "BD", "CD"]Aquí hay una solución:
function recurse_function(array, combinations = []) { if(array.length <= 1) return combinations; const start = array.shift(); for(let i = 0; i < array.length; i++) combinations.push(`${start}${array[i]}`); return recurse_function(array, combinations); } console.log( recurse_function(['A','B','C','D']) );var myArray = ['A','B','C','D'] var sql_parts = [] for(var i =0; i< myArray.length; i++){ var a = myArray[i] for(var j = i+1; j<myArray.length; j++){ var b=myArray[j] var c= a+b sql_parts.push(c) } }