0

好吧,我正在尝试在线学习 freeCodeCamp 课程之一,当我认为我不应该这样做时,我变得不确定。我是新手,所以可能有一个非常简单的解决方案,但我想知道我哪里出错了。问题涉及对称差异:

提示符是这样说的:“两个集合的数学术语对称差(△或⊕)是两个集合中的任何一个但不在两个集合中的元素的集合。例如,对于集合 A = {1, 2 , 3} and B = {2, 3, 4}, A △ B = {1, 4}。对称差分是二元运算,这意味着它只对两个元素进行运算。所以要计算一个涉及三个之间对称差分的表达式元素(A △ B △ C),你必须一次完成一项操作。因此,对于上面的集合 A 和 B,并且 C = {2, 3},A △ B △ C = (A △ B) △ C = {1, 4} △ {2, 3} = {1, 2, 3, 4}。创建一个函数,该函数接受两个或多个数组并返回它们对称差的数组。返回的数组必须只包含唯一值(不重复)。”

这是我的代码:

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);
    };
};

当我运行该函数时,它是否有原因不断返回 UNDEFINED?IF 语句中的这两个控制台日志返回他们正在寻找的正确值,但 RETURN 语句只会给出未定义的...

4

0 回答 0