Javascript 循环不在阵列内部循环&;比较数组的元素

Javascript 循环不在阵列内部循环&;比较数组的元素,javascript,Javascript,在这个函数中,我尝试循环到一个数组中,然后返回以下内容:如果一年由所有不同的数字组成,那么它是一个快乐的一年,应该存储在它所属的位置,在快乐数组中。如果不是,则应放入notHappy数组中 现在的问题是: 1) 如果我尝试的条件没有返回任何结果,[]。我很肯定这不是正确的做法 for (var i = 0; i <= t.length; i++) { if (i[0] != i[1] && i[0] != i[2] && i[0] != i[3])

在这个函数中,我尝试循环到一个数组中,然后返回以下内容:如果一年由所有不同的数字组成,那么它是一个快乐的一年,应该存储在它所属的位置,在快乐数组中。如果不是,则应放入notHappy数组中

现在的问题是:

1) 如果我尝试的条件没有返回任何结果,
[]
。我很肯定这不是正确的做法

    for (var i = 0; i <= t.length; i++) {
if (i[0] != i[1] && i[0] != i[2] && i[0] != i[3]) {
        o.happy.push(i++);
    } else { 
        o.notHappy.push(i++)
    }
    }

您的代码有一些问题


1-for(var i=0;i在第一个代码示例中,您检查的是索引var,而不是年份数组。在第二个代码中,您将var i推送到数组,而不是年份(var t)。还要注意,您在for循环中增加了索引,这是非常糟糕的做法@David所评论的外观correct@DavidWinder谢谢你的评论,伙计。在第一个例子中,我检查的是指数var而不是年份数组,这到底是什么意思?类似于if(t[0]!=t[1]&&t[0]!=t[2]&&t[0]!=t[3])在第二段代码中,如果我在循环外增加索引,我首先如何“关闭”for循环?ThanksI的意思正是你所写的-t[0]!=t[1]…检查数组结构以查找NaN问题。我不是要在循环外增加索引-for循环的第一行中有I++的增量索引->您需要在push命令中从I中删除+。另外请注意,您检查了t[0]!=t[1]……不检查所有的数字是不同的-考虑案例2444解决:)谢谢大家!
function nextHappyYear(arr){
    var o = {
        happy: [],
        notHappy: []
    };

    var t = arr.map(e => e.toString().split(""));

    for (var i = 0; i <= t.length; i++) {
        if (i%2 === 0) {
            o.happy.push(i++);
        } else { o.notHappy.push(i++)}
    }

    return console.log(o.happy)
}  

nextHappyYear([1021, 1022, 1023, 1024]) // returns [0, 2, 4] instead of [1022, 1024]