Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сравнить строковые значения с массивом, для каждого из них?

Константин Ефименко Гуру (3721), закрыт 4 года назад
Вот, что у меня уже есть:

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, которая будет динамически изменяться.
Лучший ответ
Elepsis Eclipse Гений (64066) 4 года назад
Ээм... оно не только первое проверяет. Условие неверное, вот и все остальные кроме первого не подходят)
Можно например так...

if ( values.indexOf( FIO[ i ] ) == -1 ) {
  $('.left').append( ...);
}

Хотя,

if( ! values.includes( FIO[ i ] ) {
  $('.left').append( ...);
}
Константин ЕфименкоГуру (3721) 4 года назад
Он тогда исключает из результата вообще все вхождения. Изначально в правом select(е) ничего нету (нужно перекинуть из левого).
Elepsis Eclipse Гений (64066) А я сам запутался в названиях... values - справа, проверяем каждое FIO среди них, и только если его там нет - indexOf вернет -1, тогда и отправить их налево, так: if ( values.indexOf( FIO[ i ] ) == -1 ) { $(".left").append(...) }
Остальные ответы
Petr Muhurov Мыслитель (5922) 4 года назад
[...new Set([...Array.from(document.querySelectorAll('.right option'), ({ value }) => value), ..FIO])]
Похожие вопросы