Javascript isLucky任务-编码信号;即使if-else语句默认为false,也保持运行true

Javascript isLucky任务-编码信号;即使if-else语句默认为false,也保持运行true,javascript,Javascript,我正在对CodeSignal执行isLucky任务,我的代码一直返回true。我能做些什么来解决这个问题 任务:如果票号的前半位数和后半位数的和相等,则认为票号是幸运的 给定票号n,确定它是否幸运 我试着用 if(first == second) { return true; } else { return false; } function isLucky(n) { var half = n.length/2; var first = 0; var second

我正在对CodeSignal执行isLucky任务,我的代码一直返回true。我能做些什么来解决这个问题

任务:如果票号的前半位数和后半位数的和相等,则认为票号是幸运的

给定票号n,确定它是否幸运

我试着用

if(first == second) {
return true;
} else { 
return false;
}


function isLucky(n) {
    var half = n.length/2;
    var first = 0;
    var second = 0;
    for(var i = 0; i < half; i++) {
        first += n[i];
    }
    for(var j = half+1; j < n.length; j++) {
        second += n[j];
    }
    if(first != second) {
        return false;   
    } else {
        return true;
    }
}
if(第一个==第二个){
返回true;
}否则{
返回false;
}
函数isLucky(n){
var half=n.长度/2;
var first=0;
var秒=0;
对于(变量i=0;i<一半;i++){
第一+=n[i];
}
对于(var j=half+1;j

其中一项实践测试为n=239017;我希望它返回false,但它返回true。

n
是一个数字,数字没有
长度
属性或数字索引。考虑到这一点,我们发现代码的重要部分永远不会运行:

function isLucky(n) {
    var half = n.length/2; // n.length is undefined; undefined / 2 is NaN

    var first = 0;
    var second = 0;

    // (0 < NaN) is false; this loop never runs
    for(var i = 0; i < half; i++) {
        first += n[i];
    }

    // NaN + 1 is NaN, (NaN < undefined) is false; this loop never runs
    for(var j = half+1; j < n.length; j++) {
        second += n[j];
    }

    // Nothing has happened since first and second were both set to 0; return true
    if(first != second) {
        return false;   
    } else {
        return true;
    }
}
JavaScript解决方案

function isLucky(n) {    
    let count = 0;
    n = String(n).split('').map(t => {return parseInt(t)});
    n.forEach( (el, i) => { (i < n.length / 2) ? count += el : count -= el });
    return count == 0;
}
函数isLucky(n){
让计数=0;
n=String(n).split(“”).map(t=>{return parseInt(t)});
n、 forEach((el,i)=>{(i
任务对不均匀数字有何说明?比如55139?没有真正的一半。
n
是数字还是字符串?用
var-half=n.length/2
替换为
var-half=Math.floor(n.length/2)
因此在奇数情况下忽略中间项(实际上不应该有奇数项,但似乎有)。@Fortuna,它说输入应该始终是偶数。“[input]integer n表示为偶数位数的正整数的票号。”@AuxTaco,当我尝试将其转换为字符串时,遇到了相反的问题。函数不断返回false而不是True感谢您的详细回答;这很有帮助!