Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数总是返回false_Javascript_Jquery - Fatal编程技术网

Javascript 函数总是返回false

Javascript 函数总是返回false,javascript,jquery,Javascript,Jquery,对于Javascript来说相当陌生,有人能告诉我为什么这个简单的数组循环/字符串比较函数总是返回false吗?它们都是string类型,并且数据相同,循环应该绝对返回true。可能的语法错误?还有一种更简单的方法来运行此检查 function imageDuplicate(fileName) { $.each(previewImagesArray, function(index) { if(previewImagesArray[index].name == fi

对于Javascript来说相当陌生,有人能告诉我为什么这个简单的数组循环/字符串比较函数总是返回false吗?它们都是string类型,并且数据相同,循环应该绝对返回true。可能的语法错误?还有一种更简单的方法来运行此检查

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为;返回false