JavaScript中过滤奇数和六位数时返回空数组的代码

yacmzcpb  于 2023-09-29  发布在  Java
关注(0)|答案(3)|浏览(97)

我已经尝试了几种不同的方法来实现返回一个数组的目标,其中每个元素都是奇数,长度为六位数,但是我尝试的每种方法似乎都会导致不同的控制台错误。
错误和数据集如下:
代码如下:

function findEfficientBulbs(serialNumbers) {
    console.log(serialNumbers);
    const efficientSerialNumbers = [];
    const sixDigits = [];
    for (let i = 0; i < serialNumbers.length; i++){
        const six = serialNumbers[i]
        if (six.length === 6){
            sixDigits.push(six)
        }
    }
    let odds = sixDigits.filter(n => n%2)

    efficientSerialNumbers.push(odds)

    return efficientSerialNumbers;
}
yzuktlbb

yzuktlbb1#

如果你想简化,你可以更新你的函数,只包含一个过滤器。你已经有了一个过滤器,所以只需要修改它。
对于这个过滤器,数字必须是奇数,长度必须为6才能返回true,否则它返回false,并且不添加到输出中。
我使用的是String(n),所以它变成了一个使用. length的字符串。

function findEfficientBulbs(serialNumbers) {
    return serialNumbers.filter(n => n%2 && String(n).length == 6);
}

console.log(findEfficientBulbs([1,2,333333,555555]))
nfzehxib

nfzehxib2#

function findEfficientBulbs(serialNumbers) 
{
    console.log(serialNumbers);
    let efficientSerialNumbers = [];
    let serial = serialNumbers.map(function(e){return e.toString()});
    let sum = 0;
    // Write your code here
   for(let i = 0; i < serial.length; i++)
   {
       if(serial[i].length === 6)
       {
           for(let j = 0; j<serial[i].length; j++)
           {
               {
                   sum += serial[i][j];
               }
           }
       
           if(sum % 2 === 1)
           {
               efficientSerialNumbers.push(serial[i]);
           }
       }
   }
   console.log('Efficient Serial Number:')
   console.log(efficientSerialNumbers);
}
findEfficientBulbs([32438, 34193, 149143, 4329429, 98537, 238791, 23492, 298342]);
cdmah0mi

cdmah0mi3#

this is what I did

function findEfficientBulbs(serialNumbers) {
    console.log(serialNumbers);
    const efficientSerialNumbers = [];
    // Write your code here
    for (let i = 0; i < serialNumbers.length; i++){
    // turn the serial numbers into a string to get the length
        let str = serialNumbers[i].toString();
    // check if odd and exactly 6 characters long
        if(serialNumbers[i] % 2 !== 0 && str.length === 6) {
                efficientSerialNumbers.push(serialNumbers[i])
        }
    }
    return efficientSerialNumbers;
}

相关问题