Muy bien, estoy tratando de hacer una de las lecciones gratuitas de CodeCamp en línea y me estoy quedando indefinido cuando creo que no debería estarlo. Soy nuevo en esto, por lo que probablemente haya una solución muy fácil para esto, pero me gustaría saber dónde me estoy equivocando. El problema implica diferencias simétricas:
Esto es lo que dice el aviso: "El término matemático diferencia simétrica (△ o ⊕) de dos conjuntos es el conjunto de elementos que están en cualquiera de los dos conjuntos pero no en ambos. Por ejemplo, para los conjuntos A = {1, 2 , 3} y B = {2, 3, 4}, A △ B = {1, 4}. La diferencia simétrica es una operación binaria, lo que significa que opera solo en dos elementos. Entonces, para evaluar una expresión que involucra diferencias simétricas entre tres elementos (A △ B △ C), debe completar una operación a la vez. Por lo tanto, para los conjuntos A y B anteriores, y C = {2, 3}, A △ B △ C = (A △ B) △ C = {1, 4} △ {2, 3} = {1, 2, 3, 4}. Cree una función que tome dos o más matrices y devuelva una matriz de su diferencia simétrica. La matriz devuelta debe contener solo valores únicos (no duplicados)".
Aquí está mi código:
function sym(...args) { if (args.length == 1) { console.log(args) let result = args[0].sort((a, b) => a - b); console.log(result) return result; } else { let fArray = []; let aArray = args[0].filter(t => !args[1].includes(t)); let bArray = aArray.concat(args[1].filter(t => !args[0].includes(t))); bArray.forEach(item => { if (!fArray.includes(item)) fArray.push(item)}); let values = Object.values(args); values.splice(0, 2, fArray); sym(...values); }; };¿Hay alguna razón por la que la función sigue regresando SIN DEFINIR cuando la ejecuto? Esos dos registros de consola en la declaración IF devuelven los valores correctos que están buscando, pero la declaración RETURN solo dará indefinido...