сравнение элементов массивов на js

152
05 июля 2018, 01:30

Хочу на js сравнить два массива и выстроить select и выделить все option которые соответсвуют условию. Вот код:

var data = '{"ListFieldsForGroup":[{"id":"12","type":"text","placeholder":"\u0426\u0435\u043d\u0430"},{"id":"13","type":"select","placeholder":"\u041a\u043e\u043c\u043d\u0430\u0442\u044b"},{"id":"14","type":"select","placeholder":"\u042d\u0442\u0430\u0436"},{"id":"19","type":"radio","placeholder":"\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e\u043c\u0430"}],"FieldsForCategory":[{"id_field":"13"},{"id_field":"19"}]}'; 
 
var sel; 
var newData = JSON.parse(data); 
$.each(newData.ListFieldsForGroup, function(index, lffg) { 
  $.each(newData.FieldsForCategory, function(i, ffg) { 
    if (lffg.id == ffg.id_field) { 
      sel = 'selected'; 
    } else { 
      sel = ''; 
    } 
  }); 
  $('#advertFields').append('<option value="' + lffg.id + '" ' + sel + '>' + lffg.placeholder + ' - (' + lffg.type + ')</option>'); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<select id="advertFields"></select>

Проблема в том, что данный код выделяет либо только один option, либо все, но не те которые удовлетворяют условию.

Answer 1
$.each(newData.ListFieldsForGroup, function(index, lffg) {
    sel = ''; // !!!
    $.each(newData.FieldsForCategory, function(i, ffg) {
        if(lffg.id == ffg.id_field) {
            sel = 'selected';
        }
    });
    $('#advertFields').append('<option value="' + lffg.id + '" '+sel+'>' + lffg.placeholder + ' - ('+lffg.type+')</option>');
});
READ ALSO
Проблемка с модальным окном

Проблемка с модальным окном

Вот есть такое модальное окно:

197
Не работает плагин gulp-sourcemap

Не работает плагин gulp-sourcemap

Имеется такой gulpfile

337
Vuex (Vue.js) - глобальное сообщение об ошибке

Vuex (Vue.js) - глобальное сообщение об ошибке

Как сделать глобальное глобальные ошибки в Vue (через Vuex)?

125