创建一个只返回奇数的函数。

4 浏览
0 Comments

创建一个只返回奇数的函数。

我在这个问题上花了很长时间,可惜发现我的函数只有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);

0
0 Comments

问题的原因是需要创建一个只返回奇数的函数。解决方法是使用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方法通过取余运算符返回奇数。最后,调用函数并打印结果。

0
0 Comments

这段代码修改了一下,使其只返回奇数。使用了一个类似于数学中的取余运算的% 运算符:当我们使用 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);

虽然这个解决方案有效,但它主要是代码,并没有解释为什么有效。如果你在代码中加入对取余运算符的使用进行解释,会更加有帮助。原始代码中没有使用到这个运算符。

补充了一个简短的解释。

0
0 Comments

问题出现的原因是需要创建一个只返回奇数的函数。

解决方法是使用循环从初始参数到结束参数,并使用取模运算获取奇数。具体代码如下:

let result = [];
let returnOdd = (n1, n2) => {
    for(i = n1; i < n2; i++){
        if(i % 2 != 0){
            result.push(i)
        }
    }
    return result;
}
console.log(returnOdd(2, 20));

以上代码会将2到20之间的奇数存入一个数组并返回。

0