gpt4 book ai didi

javascript - 为什么空参数没有被识别为未定义?

转载 作者:行者123 更新时间:2023-11-30 09:12:16 24 4
gpt4 key购买 nike

我有一个(几乎)可行的编码挑战解决方案:

function addLetters(...letters) {
let sum = 0;
const alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
if (typeof letters === 'undefined' || letters === [] || letters === undefined) {
return 'z';
}
for (let i = 0; i < letters.length; i++) {
sum += (alphabet.indexOf(letters[i]) + 1);
}
if (sum <= 26) {
return alphabet[sum - 1];
} else {
while (sum > 26) {
sum = (sum - 26);
if (sum <= 26) {
return alphabet[sum - 1];
}
}
}
}

console.log(addLetters())

但如您所见,在 console.log(addLetters()) 的这种特殊情况下,它返回 undefined 而不是 'z' - 为什么会这样?

我认为这一定与 ...lettersrest / default / destructured / spread 的方式有关争论。

事实上,挑战确实希望参数显示为spread,但我不知道如何适应它。

编辑挑战测试规范:

enter image description here

最佳答案

letters  === []

将始终为false,因为它们是两个不同的引用,永远不会计算为 true,您需要检查数组的长度检查它是否为空

您还可以安全地从 if 语句中删除其他两个条件,因为 letters 将始终是一个数组

function addLetters(...letters) {
let sum = 0;
const alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
if (letters.length === 0) {
return 'z';
}
for (let i = 0; i < letters.length; i++) {
sum += (alphabet.indexOf(letters[i]) + 1);
}
if (sum <= 26) {
return alphabet[sum - 1];
} else {
while (sum > 26) {
sum = (sum - 26);
if (sum <= 26) {
return alphabet[sum - 1];
}
}
}
}

console.log(addLetters())

关于javascript - 为什么空参数没有被识别为未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57679827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com