我试图弄清楚如何计算'#34;孔的数量"在一个数字。也就是说,其中8有两个孔,0,4,6,9有一个孔,其余没有。
出于某种原因,我得到了一个未定义的回归,我把头发拉过来。我错过了什么吗?
var numOfHoles = 0;
for (i = 0; i < num.length; i++) {
if (num === 8) {
numOfHoles += 2;
}
else if (num === 0 || num === 4 || num === 6 || num === 9) {
numOfHoles++;
}
else
numOfHoles;
}
console.log(numOfHoles);
}
答案 0 :(得分:1)
除非你复制它时顶部缺少一些代码,否则你需要删除尾部括号或将其声明为函数(见下文)。
编辑:这是一个奇怪的问题。首先,使用num上的索引引用的答案可能无法按预期工作。最简单但可能不是最好的答案是将数字转换为字符串,然后索引并与字符而不是数字进行比较。
正如其他人提到的那样,如果你保持正确的代码格式,它会让事情变得更容易:)
function countNumHoles(num) {
var numOfHoles = 0;
var numStr = num.toString();
for (i = 0; i < num.toString().length; i++) {
if (numStr[i] === '8') {
numOfHoles += 2;
} else if (numStr[i] === '0' || numStr[i] === '4' || numStr[i] === '6' || numStr[i] === '9') {
numOfHoles++;
}
}
console.log(numOfHoles);
}
答案 1 :(得分:1)
我猜你正在寻找这样的东西:
application/config/autoload.php
你有多个小错误。
首先,你不需要var num = [9,4,5];
var numOfHoles = 0;
for (i = 0; i < num.length; i++){
if (num[i] == 8)
{
numOfHoles += 2;
}
else if (num[i]== 0 || num[i]== 4 || num[i]== 6 || num[i]== 9)
{
numOfHoles++;
}
}
console.log(numOfHoles);
,这并不意味着什么。
如果您尝试检查每个元素以使用元素的索引,那么您需要使用else { numOfHoles }
。
答案 2 :(得分:1)
只需取数字,将其拆分为一个整数数组,然后使用箭头函数作为参数,以减少从数字到孔图的相关值的总和。
function numHoles(n){
return (""+n).split('').reduce((t,i) => t+=+"1000101021"[i],0);
}
document.write(numHoles(48488621597));
答案 3 :(得分:0)
问题在于你错误地设计了代码,因此很难看到错误。代码的正确标识如下:
var numOfHoles = 0;
for (i = 0; i < num.length; i++) {
if (num === 8) {
numOfHoles += 2;
} else if (num === 0 || num === 4 || num === 6 || num === 9) {
numOfHoles++;
} else
numOfHoles;
console.log(numOfHoles);
}
现在,通过正确的标识,您可以轻松地看到else numOfHoles;
不需要,num ins定义,长度适用于字符串或数组。此外,console.log在循环外更好,只运行一次。这是一个功能版本:
var numOfHoles = 0;
limit = 5;
for (num = 0; num <= limit; num++) {
if (num === 8) {
numOfHoles += 2;
} else if (num === 0 || num === 4 || num === 6 || num === 9)
numOfHoles++;
}
console.log(numOfHoles);
答案 4 :(得分:0)
考虑到最重要的答案,你有一些大括号的错误。但是你在计算数组中的孔数,但你没有索引。这是我的测试片段。它与空的numOfHoles无关。但我仍然建议删除它。
var numOfHoles = 0;
var num = [4,0,9,8,5,5,5];
for (i = 0; i < num.length; i++) {
if (num[i] === 8) {
numOfHoles += 2;
}
else if (num[i] === 0 || num[i] === 4 || num[i] === 6 || num[i] === 9) {
numOfHoles++;
}
else
numOfHoles;
}
console.log(numOfHoles);
答案 5 :(得分:0)
这很难回答。您在变量“num”中使用了length属性。但严格使用比较。规则如果总是假的,考虑到(字符串“8”!== 8)。这种类型的比较要求变量具有相同的类型。在这种情况下,您使用整数或数组并使用变量i来访问循环中的元素
解决方案,或者您以字符串形式出现并使用以下系统[if(num ===“8”)],或者致力于成为int,或使用数组(推荐)。要了解我们需要查看更多代码的最佳解决方案。
您的代码应该保持这种状态。当然,如果您需要更具体的内容,请告诉我们
var num = [0,2,8,5];
var numOfHoles = 0;
for (i = 0; i < num.length; i++){
if (num[i] == 8)
{
numOfHoles += 2;
}
else if (num[i]== 0 || num[i]== 4 || num[i]== 6 || num[i]== 9)
{
numOfHoles++;
}
}
console.log(numOfHoles);