Javascript 函数总是返回false
对于Javascript来说相当陌生,有人能告诉我为什么这个简单的数组循环/字符串比较函数总是返回false吗?它们都是string类型,并且数据相同,循环应该绝对返回true。可能的语法错误?还有一种更简单的方法来运行此检查Javascript 函数总是返回false,javascript,jquery,Javascript,Jquery,对于Javascript来说相当陌生,有人能告诉我为什么这个简单的数组循环/字符串比较函数总是返回false吗?它们都是string类型,并且数据相同,循环应该绝对返回true。可能的语法错误?还有一种更简单的方法来运行此检查 function imageDuplicate(fileName) { $.each(previewImagesArray, function(index) { if(previewImagesArray[index].name == fi
function imageDuplicate(fileName)
{
$.each(previewImagesArray, function(index)
{
if(previewImagesArray[index].name == fileName)
return true;
});
return false
}
提前感谢。您是从匿名内部函数返回true,而不是从
imageDuplicate
返回true,请使用如下所示的标志变量
function imageDuplicate(fileName) {
var valid = false;
$.each(previewImagesArray, function (index) {
if (previewImagesArray[index].name == fileName) {
valid = true;
//to stop the iteration
return false
}
});
return valid
}
这个怎么样
function imageDuplicate(fileName)
{
return previewImagesArray.some(function(item)
{
return item.name === fileName;
});
}
重要提示:这将适用于IE9+,如果您需要在旧版IE中运行此功能,请遵循polyfill说明
其他帖子样本:
函数(索引)中的代码是一个单独的函数,嵌套在
imageDuplicate
中。该函数的返回值将由.each()
根据需要进行处理
因此,从外部函数返回的唯一语句是returnfalse
正如代码中的其他答案所示,您可以在
imageDuplicate
的范围内声明一个变量,并让内部函数访问和修改该值,以获得所需的效果。如注释中所述
从每个循环返回,而不是从函数返回
试试这样的
function imageDuplicate(fileName)
{
var isDuplicate = false;
$.each(previewImagesArray, function(index)
{
if(previewImagesArray[index].name == fileName){
isDuplicate = true;
return false; //exit from each loop
}
});
return isDuplicate;
}
一个调整是直接使用该值
$.each(previewImagesArray, function (index, value) {
if (value.name == fileName) {
...
}
});
@Spark:如果这个答案解决了你的问题,请“接受”它作为正确答案。如果你只使用
for
语句,它会更快,代码更少<如果(a[i].name==fileName)返回true,则(var i=0,a=previewImagesArray;i