给定一个数组,我试图返回最后一个偶数,直到新数组中给定的项目“给定数量”,它也需要按原始顺序返回。我已经编写了以下代码:
function evenNumbers(array, number) {
let newarr = [];
for (let i = array.length - 1; newarr.length < number; i-=1){
if (i % 2 == 0){
newarr.push(i);}}
return newarr.reverse();}
因此,我尝试从给定数组的末尾开始,仅将偶数插入新数组,直到新数组给定长度的“数字”长度,然后以原始顺序返回它们。似乎工作正常,除了在少数情况下,它返回一个数组,该数组包含不在我要遍历的原始数组中的数字。我想念什么?
例如:evenNumbers([-22, 5, 3, 11, 26, -6, -7, -8, -9, -8, 26], 2)
在应返回[-8,26]时返回[8,10]
它正确返回偶数和我想要的偶数,但在给定数组中甚至不包括8和10。
我认为我的for循环设置正确。它从数组let i = array.length - 1;
的末尾开始,一直持续到newarr.length < number;
为真,并向后i-=1
一次迭代一个步骤
我的后续问题是我的for循环如何知道要迭代的数组?我对javascript较新,因为我知道Python使用“ for i in array”,因此它知道要迭代的数组/列表。谢谢!
答案 0 :(得分:1)
您需要测试元素Array
(
[data] => Array
(
[0] => Array
(
[mailbox] => INBOX.Test.Sub Test Folder
)
[1] => Array
(
[mailbox] => INBOX.Junk
)
[2] => Array
(
[mailbox] => INBOX.Test
)
[3] => Array
(
[mailbox] => INBOX
)
[4] => Array
(
[mailbox] => INBOX.Drafts
)
[5] => Array
(
[mailbox] => INBOX.Trash
)
)
)
,而不是索引,然后在必要时对其进行测试。
然后,如果索引将为负数,则需要添加检查并停止迭代。
您可以使用Array#unshift
而不是Array#push
并在最后省略反转。
array[i]
具有function evenNumbers(array, number) {
let newarr = [];
for (let i = array.length - 1; newarr.length < number && i >= 0; i -= 1) {
if (array[i] % 2 === 0) {
newarr.unshift(array[i]);
}
}
return newarr;
}
console.log(evenNumbers([-22, 5, 3, 11, 26, -6, -7, -8, -9, -8, 26], 2));
console.log(evenNumbers([], 2));
循环和隐式检查的较短方法。
while
答案 1 :(得分:0)
function evenNumbers(array, number) {
let newarr = [];
for (let i = array.length - 1; newarr.length < number; i--){
if (array[i] % 2 == 0){
newarr.push(array[i]);}}
return newarr.reverse();}
const az = evenNumbers([-22, 5, 3, 11, 26, -6, -7, -8, -9, -8, 26], 2);
console.log(az);