创建一个只返回奇数的函数。
创建一个只返回奇数的函数。
我在这个问题上花了很长时间,可惜发现我的函数只有50%的正确率。所以这里的目标是返回两个参数之间所有数字中的奇数(例如,如果参数是1和5,我需要返回2和3)。我写的函数完全依赖于第一个参数。如果它是偶数,我的函数会返回奇数,但如果第一个数字是奇数,它将返回偶数。有人知道我该如何修复这个问题吗?
function oddNumbers(l, r) { const arr = []; const theEvens = []; for (let i = l; i < r; i++) { arr.push(i); } console.log(arr); for (let i = 0; i < arr.length; i += 2) { const evens = arr[0] + i; theEvens.push(evens); } theEvens.forEach((item) => arr.splice(arr.indexOf(item), 1)); console.log(arr); } oddNumbers(2, 20);
问题的原因是需要创建一个只返回奇数的函数。解决方法是使用JavaScript的filter方法来实现。这个方法根据给定的条件创建一个新的数组。在这种情况下,它将遍历数组中的所有数字,并通过取余运算符来检查数字是否为奇数。
解决方法的代码如下:
function OddNumbers(start, end) { // Create an array from the given range const nums = Array(end - start + 1).fill().map((_, idx) => start + idx); // Use filter to return the odd numbers via the % operator return nums.filter(num => num % 2); } console.log(OddNumbers(2,20));
以上代码将创建一个从给定范围内的数字生成的数组,并使用filter方法通过取余运算符返回奇数。最后,调用函数并打印结果。
这段代码修改了一下,使其只返回奇数。使用了一个类似于数学中的取余运算的% 运算符:当我们使用 i % 2 时,如果数字是偶数,那么运算的结果将为0;但是当 "i" 是奇数时,结果将为1。因此,我们可以通过这个运算来筛选出偶数和奇数。代码如下:
function oddNumbers(l, r) { const arr = []; for (let i= l; i<r; i++) { if(i % 2 !== 0) arr.push(i); } console.log(arr); } oddNumbers(2, 20);
虽然这个解决方案有效,但它主要是代码,并没有解释为什么有效。如果你在代码中加入对取余运算符的使用进行解释,会更加有帮助。原始代码中没有使用到这个运算符。
补充了一个简短的解释。