1

У меня есть фиктивные данные с 2 массивами, массивы будут иметь некоторые дублированные значения. В моем шаблоне я хочу сравнить 2 массива и добавить класс видимости is-hidden к любому, что совпадает с дубликатами, но я не уверен, как скомпилировать оба массива и выполнить сопоставление? Могу ли я запустить isEqual против 2 в каком-то each loop?Подстрочный цикл 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 ерсекция двух множеств - это совокупность всех элементов, существующих в обоих множествах.