1

我有一些包含2个数组的虚拟数据,数组会有一些重复的值。在我的模板中,我想比较2个数组,并将可见性类is-hidden添加到任何匹配的重复项,但我不确定如何循环两个数组并进行匹配?我可以针对某种each loop中的2运行isEqual吗?下划线循环2数组和模板中的匹配值

把手模板

<script type="text/html" id="tmpl"> 
    <% _.each(mappedSessions, function(session) { %> 

     <p class="<% if(session === deleteSessions) { %>is-hidden<% } %>"> 
      Mapped Entry <u><%= session %></u> Available 
     </p> 
    <% }) %> 
</script> 

JS

var data = { 
    "id": 1, 
    "deleteSessions": ["X0101"], 
    "mappedSessions": ["ABC123", "EDF092", "X0101"] 
} 

var template = _.template($('#tmpl').html()); 

$('.js-output').html(template(data)); 

回答

1

在这种情况下更好的格式数据之前发送到模板

var data = { 
 
    "id": 1, 
 
    "deleteSessions": ["X0101"], 
 
    "mappedSessions": ["ABC123", "EDF092", "X0101"] 
 
} 
 

 
var template = _.template($('#tmpl').html()); 
 
var sessions = _.map(data.mappedSessions, function (session) { 
 
    return { 
 
    isHidden: _.indexOf(data.deleteSessions, session) >= 0, 
 
    value: session 
 
    } 
 
}); 
 

 
$('.js-output').html(template({ sessions: sessions }));
.is-hidden { 
 
    color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script> 
 

 
<script type="text/html" id="tmpl"> 
 
    <% _.each(sessions, function(session) { %> 
 
     <p class="<% if (session.isHidden) { %>is-hidden<% } %>"> 
 
      Mapped Entry <u><%= session.value %></u> Available 
 
     </p> 
 
    <% }) %> 
 
</script> 
 

 
<div class="js-output"></div>

0

您应该使用intersection ...

var duplicates = _.intersection(a, b); 

这个名字来自集合论,那里的INT两套集合是两套集合中存在的所有元素的集合。