我在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>';
}
});
});
答案 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>';
}
});
(请注意,问题与比较操作本身没有任何关系。问题是内部循环总是将<li>
添加到列表中。)