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兩套集合是兩套集合中存在的所有元素的集合。