有人可以告诉我我哪里出错了吗?

时间:2021-02-11 19:20:04

标签: javascript

问题:很奇怪

写一个函数,很奇怪。该函数接受一个数字数组。它应该返回一个新数组,其中只包含给定数组中的奇数。 veryOdd 不能改变给定的数组。

我的代码

function veryOdd(array) {
  let newArray = array.slice();
  for (let i = 0; i < newArray.length; i++) {
    let number = newArray[i];
    if (number % 2 === 1) {
      newArray.push(number);
    }
  }
  return newArray;
}

3 个答案:

答案 0 :(得分:1)

正如评论中所指出的,您正在推进到您正在迭代的数组的末尾,并且循环永远不会完成。

但是有一个更简单的解决方案:Array.prototype.filter

<块引用>

filter() 方法创建一个新数组,其中包含所有通过所提供函数实现的测试的元素。

function veryOdd(a) {
  return a.filter(x => x % 2 !== 0)
}
const x = [1, 2, 3, 4, 5, 6, 7];
const y = veryOdd(x);
console.log(x);
console.log(y);

答案 1 :(得分:1)

看看它如何返回预期的输出。

let array = [];
for(let i = 0; i < 12; i++)
{
  array.push(i);
}


function veryOdd(array) {
  let newArray = []; // create a new array to push the required elements to
  for (let i = 0; i < array.length; i++) { // use the param array 
    let number = array[i]; // use the param array
    if (number % 2 === 1) {
      newArray.push(number); // Add the required elements to the new array
    }
  }
  return newArray;
}

console.log(veryOdd(array));

答案 2 :(得分:0)

我想这就是你想要的:

  • 将一个新的(空)数组分配给 'newArray'
  • 从源“数组”分配当前元素
  • 将模数结果检查更改为 Not-0

function veryOdd(array) {

  let newArray = [ ];

  for (let i = 0; i < array.length; i ++) {

    let number = array[i];

    if ((number % 2) !== 0) {
      newArray.push(number);
    }
  }

  return newArray;
}

let res = veryOdd([ 1, 2, 3, 4 ]);

console.log(res.length);

console.log(res);

相关问题