Javascript index==arr.length-1每次都返回false

Javascript index==arr.length-1每次都返回false,javascript,arrays,if-statement,Javascript,Arrays,If Statement,我有一个函数resFormat(restrictions),它将限制数组作为参数,并返回一个包含饮食限制的字符串。当使用[“res1”、“res2”、“res3”]调用它时,它应该返回“res1、res2、res3” 函数格式(限制){ 让result=”“,i 对于(限制中的i){ 如果(i==restrictions.length-1){//始终返回false 结果+=限制[i] 持续 } 结果+=限制[i]+“,” } 返回结果 } log(resFormat([“r

我有一个函数
resFormat(restrictions)
,它将限制数组作为参数,并返回一个包含饮食限制的字符串。当使用
[“res1”、“res2”、“res3”]
调用它时,它应该返回“res1、res2、res3”

函数格式(限制){
让result=”“,i
对于(限制中的i){
如果(i==restrictions.length-1){//始终返回false
结果+=限制[i]
持续
}          
结果+=限制[i]+“,”
}
返回结果
}

log(resFormat([“res1”、“res2”、“res3]”)格式)这就是在数组上使用
for..in
时发生的情况:它会导致这些类型的错误
i
将是字符串数据类型,而不是数字类型,因为它迭代属性

如果您使用
==
而不是
==
进行松散的比较,这将是可行的,但在迭代数组时最好避免使用
for..in

相反,您可以使用本机方法
join
解决此问题:

restrictions.join(", ");

当===更改为==

restrictions = ["res1","res2","res3"]
 let result="",i
        for (i in restrictions){
            if(i==restrictions.length-1){  
                result += restrictions[i]
            } 
            else
                result += restrictions[i]+", "
        }
==是JavaScript中的严格相等比较运算符,对于类型不同的值,该运算符返回false

在这个上下文中,我指的是字符串和限制。长度指的是数字,您可以尝试使用javascript中的typeof命令进行检查,并检查差异

==仅当两个运算符的类型相同时才起作用。 因此,在这种情况下,我建议您使用==,这里只检查这里的内容,而不是操作数的类型,并且非常适合此域


或如果您希望使用==,那么i的值必须是数字,而不是字符串

<代码> i <代码>是一个字符串,<代码>限制。长度-1/代码>是一个数字,因此<代码>==< /COD>不会认为它们是相同的。谢谢