Object.keys(obj).length返回字符总数而不是记录总数

时间:2016-03-11 15:42:10

标签: javascript arrays count

我正在尝试计算与用户输入的记录关联的返回记录总数。最后,我需要指定if / else语句决定是否返回多个记录。

示例1:

用户输入记录#123456789 节目显示记录#223456789& #333456789与该记录相关联 将出现一个信息窗口,其中链接已激活以显示相关记录

示例2: 用户输入记录#000006789 程序显示没有关联的记录 将显示一个信息窗口,其中没有显示关联记录的链接

目前,即使没有关联的记录,链接仍然会出现。

以前(当计数不是问题;只有输入的存在时)具有相关记录的记录的设置是:

其中compacct是与用户输入记录关联的记录列表

    else if ("<%=compacct(0) %>" != ""){
    var salecontent = "";
    var content = "<b>Account Number</b>: " + "<%=number %> "+
    "<center><br><b>Comparable Sales</b></center>"; 

    content = content + salecontent +  
                            "<br><br>" + "<a class='infolink' href=\"javascript:void(0)\" onclick=\"javascript:getallcommsale(saleaccts)\">Show all Comparable Sales</a>" +
                            "<br>" + "<img src=\"./appFiles/graphics/question3.jpg\" onmouseover=\"this.src='./appFiles/graphics/comp_sales.png';\" onmouseout=\"this.src='./appFiles/graphics/question3.jpg';\"/>" ;

我现在已经修改了另一部分中的代码,以便可以输入所有帐户,而不仅仅是具有相关记录的帐户。副作用是现在compacct检索用户输入的记录而不仅仅是关联的记录。所以我现在需要检查compacct的记录数是否大于1。我试过了:

    var sale = "<%=compacct(0) %>";
    var saleCount = Object.keys(sale).length;
    if (saleCount > 1){

检索的长度是帐户中数字的总和,而不是帐户总数

我也尝试过:

    var sale = "<%=salesstrap(0) %>";
    for (i = 1; i>saleCount.length; i++){

但出现同样的问题

1 个答案:

答案 0 :(得分:1)

sale在您的代码示例中是String。调用字符串的Object.keys()会将字符串视为字符数组,并为您提供对该数组有效的索引。即:

Object.keys("abc")

将返回数组:

["0", "1", "2"]

此数组的长度将是字符串的长度。

我不确定你期望sale是什么,而不是字符串。