На данный вопрос уже ответили:
Есть два массива входящий и изменяемый (ну а третий - объект просто используется для наполнения второго, не принципиально).
В рабочем по мере обхода нужно выполнять некоторые функции с его элементами, а после удалять,если те пересеклись с ключами во втором (наполняемом):
//входящий массив, его и будем перебирать
var filter_items = ["field_type_commece:107", "field_rooms:25", "field_rooms:27", "field_apartment_type:oldbuild"];
//наполняемый массив
//одновременно с этим массивам будет сверяться верхний filter_items если в этом массиве есть такие ключи, то надо их верхнего удалить соответствующие элементы
var url_synonyms = [];
url_synonyms['field_transaction_type'] = '';
url_synonyms['field_catalog'] = '';
url_synonyms['field_apartment_type'] = '';
url_synonyms['field_type_commece'] = '';
//объект переводов
var url_items = {}
url_items.field_transaction_type = {};
url_items.field_catalog = {};
url_items.field_apartment_type = {};
url_items.field_type_commece = {};
url_items.field_transaction_type['100'] = 'buy';
url_items.field_transaction_type['99'] = 'rent';
url_items.field_catalog['23'] = 'apartment';
url_items.field_catalog['93'] = 'room';
url_items.field_catalog['24'] = 'house';
url_items.field_catalog['68'] = 'commerce';
url_items.field_catalog['94'] = 'land';
url_items.field_catalog['95'] = 'garage';
url_items.field_apartment_type['oldbuild'] = 'oldbuild';
url_items.field_apartment_type['newbuild'] = 'newbuild';
url_items.field_type_commece['96'] = 'office';
url_items.field_type_commece['97'] = 'merchant';
url_items.field_type_commece['98'] = 'stock';
url_items.field_type_commece['102'] = 'production';
url_items.field_type_commece['104'] = 'ready-business';
url_items.field_type_commece['105'] = 'free-room';
url_items.field_type_commece['106'] = 'сar-service';
url_items.field_type_commece['107'] = 'hotel';
filter_items.forEach(function(item, key) {
var f_item_arr = item.split(':');
if (url_synonyms.indexOf(f_item_arr[0]) != -1) {
filter_items.splice(key, 1);
url_synonyms[f_item_arr[0]] = '/' + url_items[f_item_arr[0]][f_item_arr[1]];
}
})
console.log(filter_items);
Но по мере обхода второй массив изменяется и из за этого ключи не соответствуют реальным позициям в массиве.
Как изменить код, чтобы из второго массива удалились все элементы, которые пересеклись с первым
Наверное вот так:
//входящий массив, его и будем перебирать
var filter_items = ["field_type_commece:107", "field_rooms:25", "field_rooms:27", "field_apartment_type:oldbuild"];
//наполняемый массив
//одновременно с этим массивам будет сверяться верхний filter_items если в этом массиве есть такие ключи, то надо их верхнего удалить соответствующие элементы
var url_synonyms = {};
url_synonyms['field_transaction_type'] = '';
url_synonyms['field_catalog'] = '';
url_synonyms['field_apartment_type'] = '';
url_synonyms['field_type_commece'] = '';
//объект переводов
var url_items = {}
url_items.field_transaction_type = {};
url_items.field_catalog = {};
url_items.field_apartment_type = {};
url_items.field_type_commece = {};
url_items.field_transaction_type['100'] = 'buy';
url_items.field_transaction_type['99'] = 'rent';
url_items.field_catalog['23'] = 'apartment';
url_items.field_catalog['93'] = 'room';
url_items.field_catalog['24'] = 'house';
url_items.field_catalog['68'] = 'commerce';
url_items.field_catalog['94'] = 'land';
url_items.field_catalog['95'] = 'garage';
url_items.field_apartment_type['oldbuild'] = 'oldbuild';
url_items.field_apartment_type['newbuild'] = 'newbuild';
url_items.field_type_commece['96'] = 'office';
url_items.field_type_commece['97'] = 'merchant';
url_items.field_type_commece['98'] = 'stock';
url_items.field_type_commece['102'] = 'production';
url_items.field_type_commece['104'] = 'ready-business';
url_items.field_type_commece['105'] = 'free-room';
url_items.field_type_commece['106'] = 'сar-service';
url_items.field_type_commece['107'] = 'hotel';
filter_items = filter_items.filter(function(item) {
var f_item_arr = item.split(':');
let conatins = url_synonyms[f_item_arr[0]] !== undefined;
if (conatins)
url_synonyms[f_item_arr[0]] = '/' + url_items[f_item_arr[0]][f_item_arr[1]];
return conatins;
})
console.log(filter_items);
console.log(url_synonyms);
Для этого есть Array.filter
var fruits = ['Яблоки', 'Груши', 'Бананы', 'Апельсины', 'Мандарины', 'Гранаты'];
var del_els = ['Апельсины', 'Орехи', 'Помидоры', 'Груши', 'Яблоки', 'Вишня'];
del_els = del_els.filter(function(item, key) {
return !~fruits.indexOf(item)
})
console.log(fruits);
console.log(del_els);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
код запроса на клиенте , тестирую на локалке (подключаюсь к localhost:4000) :
Задача состоит в получении ответа, используя IJavaScriptExecutor и метод $postJson() Реализация следующая