问题:很奇怪
写一个函数,很奇怪。该函数接受一个数字数组。它应该返回一个新数组,其中只包含给定数组中的奇数。 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;
}
答案 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)
我想这就是你想要的:
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);