我正在申请编码训练营,但遇到了困难。我需要一些帮助来看看我做错了什么。我将发布问题、代码和输出。非常感谢任何帮助。
问题: 吉姆计划购买新包的各种灯泡。
他听说灯泡有序列号时效率最高
是奇数 恰好有六位数字 他会很感激你编写一些代码来找出哪些序列号符合标准。
当这个函数运行时,它将收到一个序列号数组 - 类似于
[32438, 34193, 149143, 4329429, 98537, 238791, 23492, 298342] 您需要添加代码以确保 Jim 收集他想要保留在提供的变量 effectiveSerialNumbers 中的序列号。
对于上面的数组,这意味着 effectiveSerialNumbers 最终应该包含
[149143, 238791] 我们添加了序列号日志,以便当我们尝试您的函数时,您可以在控制台中查看数组中的数字。欢迎您删除它、更改它、做任何您认为有用的事情!
function findEfficientBulbs(serialNumbers) {
console.log(serialNumbers)
const efficientSerialNumbers = [];
// Write your code here
for (let i= 0 ; i < serialNumbers.length ; i++)
if (serialNumbers[i].length <=5 || serialNumbers[i].length >=7) {
serialNumbers[i].shift()
} else if (serialNumbers[i] % 2 === 1 && serialNumbers[i].length === 6 ) {
serialNumbers[i].shift()
efficientSerialNumbers.unshift(serialNumbers[i])
}
console.log(efficientSerialNumbers)
console.log(serialNumbers)
return efficientSerialNumbers;
}
输出 4 传球 1 失败
应该返回一个数组
✓ Well done!
日志
[123123]
[]
[123123]
应丢弃五位或更少数字的序列号
✓ Well done!
日志
[ 1, 123, 12345 ]
[]
[ 1, 123, 12345 ]
应丢弃七位数或更多数字的序列号
✓ Well done!
日志
[ 1234567, 123456789 ]
[]
[ 1234567, 123456789 ]
应该丢弃偶数
✓ Well done!
日志
[ 1234, 123456, 12345678 ]
[]
[ 1234, 123456, 12345678 ]
应保留所有有效数字 - 那些奇数且有六位数字的数字
✕断言错误:预期 [] 深度等于 [234567, 456789]
日志
[ 123456, 234567, 345678, 456789 ]
[]
[ 123456, 234567, 345678, 456789 ]
您不需要将过滤后的值推送到第二个数组。数组已经有
Array::filter()
方法来为你完成这项工作。
数字没有
length
属性,您可以按数字范围和余数进行过滤。
function findEfficientBulbs(serialNumbers) {
return serialNumbers.filter(num => num <= 999999 && num >= 100000 && num % 2 === 1);
}
console.log(findEfficientBulbs([32438, 34193, 149143, 4329429, 98537, 238791, 23492, 298342]))
如果序列是字符串:
function findEfficientBulbs(serialNumbers) {
return serialNumbers.filter(num => num.length === 6 && num.at(-1) % 2 === 1);
}
console.log(findEfficientBulbs([32438, 34193, 149143, 4329429, 98537, 238791, 23492, 298342].map(n => n.toString())))