在数组中递归以查找奇数并推送到新变量

Zum*_*mmi 5 javascript arrays recursion loops if-statement

我试图递归那些数组以找到奇数/偶数,然后将push它们转换为newArr,但结果而不是数组,结果是在找到奇数/偶数后得到数字的字符串.

这是我写的代码,

function odd(nums){
  var result = [];
  if(nums.length === 0) {
    return result;
  } else  if (nums[0] % 2 === 0){
    result.push(nums[0])
    // return odd(nums.slice(1))
  };
  return result + odd(nums.slice(1));
};

var arr = [1,8,3,4,4,5,9,13,13,9,10];
var print = odd(arr);
console.log(print)
Run Code Online (Sandbox Code Playgroud)
如果我不写return result + odd(nums.slice(1));结果什么/ undefined,

任何人都可以帮我解释为什么结果字符串,而不是我想要的数组

Nin*_*olz 5

你需要concat数组.+仅适用于字符串或数字.

顺便说{ ... }一下,在块语句之后,你不需要分号.

function odd(nums){
    var result = [];
    if (nums.length === 0) {
        return result;
    } 
    if (nums[0] % 2 === 0) {
        result.push(nums[0]);
    }
    return result.concat(odd(nums.slice(1)));
}

var arr = [1, 8, 3, 4, 4, 5, 9, 13, 13, 9, 10];
var print = odd(arr);
console.log(print);
Run Code Online (Sandbox Code Playgroud)