2013-03-10 174 views
2

所以我想寫一個if else語句,如果Array.isArray爲false,則顯示一條消息。我在下面的功能允許用戶輸入地址,點擊Find ZipCode並做它的事情。該功能的工作原理,它只是說,如果我輸入一個無效的地址,它不顯示我想要的信息,這是invalid zipcodeArray is.Array if和else語句

在我的HTML,我有:

<label> 
Address: 
     <input name="address" type="text" id="address"></label> 
     <input type="button" value="Find ZipCode" id="find"> 
<p id="output"></p> 

和Javascript:

var hello = function(data) { 
    var result = ""; // empty string to hold the value 
    var address = $("#address").val(); 

    if (! Array.isArray(data)) 
    { 
     $("#output").html("invalid zipcode"); 
    } 
    else { 
     for (var i = 0; i < data.length; i++) 
     { 
      var zipcode = data[i].zipcode; 
      result += address + " zipcode: " + zipcode; 
     } 
    $("#output").html(result); 

    } 
}; 

$("#find").click(function(){ 
    var address = $("#address").val(); 
    $("#output").html("Loading...");    
    $.getJSON("zipcodelookup.php", "address="+address , hello); 
}); 

回答

3

除非您修改了Array.prototype,否則沒有Array.isArray方法。我認爲你要找的是$.isArray

+2

[ES5向'Array'添加'isArray'方法](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/isArray)。對*不支持這一點的瀏覽器的明顯例外是IE <10,然而,它可以被細微地填充。 – Matt 2013-03-11 00:01:32

+0

+1由於jQuery已經被導入,所以'$ .isArray'絕對是OP想要的(或應該使用的)。 – 2013-03-11 01:06:00

0

您還可以測試這樣的,看它是否是一個數組:

function isArray(arr) { 
    return Object.prototype.toString.apply(arr) === '[object Array]'; 
} 
0

測試的類型在Javascript來推斷其他條件往往是一個壞主意。看來在這種情況下,如果找到了郵政編碼,那麼返回一個數組(某物)。

因此,你的結論是,如果你沒有得到一個數組,找不到郵政編碼。這不是特別強壯,服務器返回更有用的定義的消息或錯誤代碼會更好,例如,它可以建議郵政編碼沒有找到,輸入無效或數據庫不可用。

您也可以對返回的數組執行測試,看看它是否具有您想要的功能(即使用功能檢測)。