Jquery pu sh для возражения только уникальные элементы - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть такой код:

var leadNamesForAutocomplete=[];
$('#filterByNameAutosuggestion option').each(function () {
    leadNamesForAutocomplete.push({label: $(this).text(), value: $(this).val()});
});

Как я могу добавить sh, чтобы привестиNamesForAutocomplete только уникальный ярлык?

Ответы [ 3 ]

1 голос
/ 28 апреля 2020

Для уникальной метки вам необходимо проверить, была ли эта метка уже нажата.

var leadNamesForAutocomplete=[];
var labels = []; // Makes things easier
$('#filterByNameAutosuggestion option').each(function () {
    var label = $(this).text(), value = $(this).val();
    if (!labels.includes(label)) {
      leadNamesForAutocomplete.push({label: label, value: value});
      labels.push(label);
    }
});
0 голосов
/ 28 апреля 2020

Вы можете использовать .map() и .indexOf() следующим образом:

var leadNamesForAutocomplete=[];
$('#filterByNameAutosuggestion option').each(function () {
    if( loadNamesForAutocomplete.map(o => o.label).indexOf( $(this).text() ) === -1 ) {
        leadNamesForAutocomplete.push({label: $(this).text(), value: $(this).val()});
    }
});
0 голосов
/ 28 апреля 2020

Вы можете использовать Set для отслеживания меток, которые уже были сохранены:

var leadNamesForAutocomplete=[];
var labels = new Set();
$('#filterByNameAutosuggestion option').each(function () {
    var label = $(this).text();

    if (!labels.has(label)) {
        labels.add(label);
        leadNamesForAutocomplete.push({label: label, value: $(this).val()});
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...