在比较和匹配两个对象列表时,防止结果列表中的重复

时间:2015-02-02 21:08:16

标签: javascript html

我在javascript中比较两个对象,如果匹配则将颜色设为红色,如果不是保持黑色。但是,它返回两行信息而不是一行。

在下面的结果中,我希望看到前两个元素红色,最后一个黑色。但是它返回并写入两行,而不是一行。

$.each(aut.AssociatedwellList, function(k,mano) { 
    $.each(aut.WellList, function(j,mango) { 
        if(mano.WellName === mango.WellName) {
            wellNameList += '<li style="color:red;"><div>'+ mango.WellName+'</div></li>';
        } else {
            wellNameList += '<li ><div>'+ mango.WellName+'</div></li>';
        }
    });
});

1 个答案:

答案 0 :(得分:2)

您未正确使用嵌套循环。您可以使用数组.some()方法查看&#34; well列表中的哪些条目&#34;也在#34;相关的井列表中#34; (这是我认为你正在尝试做的事情):

        $.each(aut.WellList, function(k,mano){
            if(aut.AssociatedwellList.some(function(w) { return w.WellName === mano.WellName; }))
                {
                wellNameList += '<li style="color:red;"><div>'+ mano.WellName+'</div></li>';
                }
                else
                {
             wellNameList += '<li ><div>'+ mano.WellName+'</div></li>';
                }
            });

Updated jsfiddle

(请注意,问题与比较操作本身没有任何关系。问题是内部循环总是<li>添加到列表中。)