簡體   English   中英

函數總是返回false

[英]function always returning false

對Javascript來說還很陌生,誰能告訴我為什么這個簡單的數組循環/字符串比較函數總是返回false? 它們都是字符串類型,數據是相同的,因此循環絕對應該返回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 +上運行該版本,則該功能將在IE9 +上運行,請按照此處的polyfill說明進行操作。

其他職位樣本:

javascript在數組中查找具有特定屬性的對象

如注釋中所述, 從每個循環返回,而不是從函數返回。

試試這個

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; 
}

function(index)內部的代碼是一個單獨的函數,嵌套在imageDuplicate內部。 該函數的返回值將由.each()認為合適。

因此,從外部函數返回的唯一語句是return false

正如其他答案在代碼中所說明的那樣,您可以在imageDuplicate的范圍內聲明一個變量,並可以訪問內部函數並修改該值,以便獲得所需的效果。

一種調整是直接使用該值

    $.each(previewImagesArray, function (index, value) {
        if (value.name == fileName) {
            ...
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM