我怎样才能检查数组中的下一个元素是否与当前元素的名称相同

时间:2011-05-06 17:59:37

标签: jquery

我有一个数组,我正在尝试检查下一个慢速数组中的数组是否与数组中当前的慢速数据相同。

到目前为止,这是我的逻辑:

$("#container").append("<table border='1' id='main-table'></table>");       
                var strNames = ["dennis", "dennis", "d00d", "sweet"].sort();
                var categories = [];

                for (var i = 0; i < strNames.length; i++) {

                    if (strNames[i] == strNames[i+1])
                        categories[i] = strNames[i];

                    console.log(categories[i]);
                    if (categories.length  > 1) {
                        $("#main-table").append("<tr class='main-table-row'><td><div class='expandTableCell' toggle='false'></div></td></tr>"); 
                        for (var x = 0; x < categories.length; x++)
                            if (x == 0)
                                $("#main-table tr.main-table-row td div.expandTableCell").append("<div class='expandTableCellHeader'>" + categories[x] + "</div>");
                            else
                                $("#main-table tr.main-table-row td div.expandTableCell").append("<div class='expandTableCellData'>" + categories[x] + "</div>");
                    } else
                        $("#main-table").append("<tr class='main-table-row'><td>" + strNames[i] + "</tr>");
                }

我需要它来检查数组的下一个索引,如果它具有相同的名称,则将其存储到最终构建树的类别中。如果您需要更多信息,我可以尝试提供更多信息。

3 个答案:

答案 0 :(得分:0)

我相信

  

if(strNames [i] == strNames [i + 1])                           categories [i] = strNames [i];

当我指向'strNames'数组的最后一个元素时,

将失败。将抛出异常,因为i + 1将指出数组。

否则,我认为这个“如果”没有任何问题。要避免此错误,您需要使for循环类似于

for (var i = 0; i < strNames.length-1; i++)

我还在'if'比较if (categories.length > 1)

中看到了另一个问题

不一定是if (categories.length >= 1)吗?如果保持原样,那么当类别长度为1时,则不输入块。

答案 1 :(得分:0)

除此之外:

if (i + 1 < strNames.length 
    i + 1 < categories.length 
    && categories[i] == strNames[i+1])

你应该在路上

答案 2 :(得分:0)

我不得不改变你的逻辑,但是你去了:

<强> Live Demo

$("#container").append("<table border='1' id='main-table'></table>");

var strNames = ["dennis", "dennis", "d00d", "sweet"].sort();
var categories = [];

for (var i = 0; i < strNames.length; i++) {
    var name = strNames[i];
    if (typeof(categories[name]) == 'undefined') categories[name] = 1;
    else categories[name] += 1;
}

for (var name in categories) {
    var val = categories[name];
    if (val > 1) {
        $("#main-table").append("<tr class='main-table-row'><td><div class='expandTableCell' toggle='false'></div></td></tr>");
        for (var x = 0; x < val; x++)
            if (x == 0) $("#main-table tr.main-table-row td div.expandTableCell").append("<div class='expandTableCellHeader'>" + name + "</div>");
            else $("#main-table tr.main-table-row td div.expandTableCell").append("<div class='expandTableCellData'>" + name + "</div>");
    } else $("#main-table").append("<tr class='main-table-row'><td>" + name + "</tr>");
}