Elepsis Eclipse
Гений
(64066)
4 года назад
Ээм... оно не только первое проверяет. Условие неверное, вот и все остальные кроме первого не подходят)
Можно например так...
if ( values.indexOf( FIO[ i ] ) == -1 ) {
$('.left').append( ...);
}
Хотя,
if( ! values.includes( FIO[ i ] ) {
$('.left').append( ...);
}
Константин ЕфименкоГуру (3721)
4 года назад
Он тогда исключает из результата вообще все вхождения. Изначально в правом select(е) ничего нету (нужно перекинуть из левого).
var option = document.querySelectorAll('.right option'),
values = [];
for (var i = 0; i < option.length; i++)
{
values[i] = option[i].value;
}
for (var i = 0; i < FIO.length; i++)
{
if (values.indexOf(FIO[i]) != 0)
{
$('.left').append('<option value="'+FIO[i]+'">'+FIO[i]+'</option>');
}
}
Первый цикл перебирает все option в правом select(е) и собирает значения value в массив. Второй цикл перебирает пришедший массив FIO и перебирая каждое значение, вставляет их в левый select. При помощи indexOf(), я исключил перед вставкой в левый select, те значения которые уже имеются в правом. Но indexOf() позволяет найти и сопоставить лишь первое вхождение, которое будет найдено.
Как проверить на соответствие и исключить из результата, каждое значение массива values? Возможно есть какое-нибудь расширение, которое это позволяет. Подойдёт решение как на js, так и на jQuery.
P.S.: Оба цикла всегда будут иметь разную длину length, которая будет динамически изменяться.