2013-03-10 137 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来推断其他条件往往是一个坏主意。看来在这种情况下,如果找到了邮政编码,那么返回一个数组(某物)。

因此,你的结论是,如果你没有得到一个数组,找不到邮政编码。这不是特别强壮,服务器返回更有用的定义的消息或错误代码会更好,例如,它可以建议邮政编码没有找到,输入无效或数据库不可用。

您也可以对返回的数组执行测试,看看它是否具有您想要的功能(即使用功能检测)。