缺少的数字解决方案给出了不正确的语法错误

Missing Number solution giving incorrect syntax error

正在尝试解决下面的漏号问题

            Input: nums = [0,1]
            Output: 2
            Explanation: n = 2 since there are 2 numbers, so all numbers are in the range [0,2]. 2 is the missing number in the range since it does not appear in nums.

它的解决方案给出了不正确的语法错误,此代码中的任何帮助,基本上构造了大小为 n+1 的数组,为缺少的元素留出位置。然后将每个val分配给-1,这样我们就可以看到哪个位置没有填充

                let missingNumber = function(nums){


                    const sol =new Array(nums.length+1).fill(-1);
                    
                    for (const num of nums)
                    {
                    sol[num] = num;
                    
                    }
                    
                    return sol.indexOf(-1);



                }

                console.log(missingNumber(5))

我得到的错误是

            PS C:\VSB-PRO> node Fibo.js
            C:\VSB-PRO\Fibo.js:5
                const res = new Array(nums.length+1).fill(-1);
                            ^

            RangeError: Invalid array length
                at missingNumber (C:\VSB-PRO\Fibo.js:5:17)
                at Object.<anonymous> (C:\VSB-PRO\Fibo.js:18:13)
                at Module._compile (node:internal/modules/cjs/loader:1101:14)
                at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
                at Module.load (node:internal/modules/cjs/loader:981:32)
                at Function.Module._load (node:internal/modules/cjs/loader:822:12)
                at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
                at node:internal/main/run_main_module:17:47

感谢您的帮助

此致,

卡罗琳

当您尝试访问参数上的 length 属性 时,您似乎在想将数组传递给 missingNumber 函数。但是,您将常规数字 5 传递给函数。当我传入一个数组时,这段代码应该可以解决你的问题:

let missingNumber = function(nums) {
  const sol = new Array(nums.length + 1).fill(-1);

  for (const num of nums) {
    sol[num] = num;
  }

  return sol.indexOf(-1);
}

console.log(missingNumber([5, 3, 2, 4]))

如果这不是您想要的,那么我建议您查看代码以了解在将数据传递到代码中的函数时数据传输到何处。