Если формирую массив
ColumnsFilter.prototype.getColumnsList = function() { // Получаем список столбцов, имена, и их состояния по умолчанию исходя из html-разметки
let columns = [];
$('.table-light__head [data-column]').each( function() {
columns.push({
'column': $(this).data('column'),
'state': $(this).data('default-state'),
'name': $(this).find('.table-light__head-text').text()
});
});
return columns;
};
Он не сортируется, и элементы в нем отображены в порядке добавления.
0: {column: "campaign", state: true, name: "Кампания "}
1: {column: "state", state: true, name: "Состояние"}
2: {column: "position_indicator", state: true, name: "Клики по позициям за вчерашний день "}
3: {column: "campaign_ads_regions", state: false, name: "Регионы показов"}
4: {column: "bid_modifiers", state: false, name: "Корректировки ставок"}
5: {column: "strategy_in_direct", state: false, name: "Стратегия в Директе"}
6: {column: "relevant_keywords", state: false, name: "Дополнительные релевантные фразы"}
7: {column: "metrica_counters", state: false, name: "Счетчики метрики"}
8: {column: "vCards", state: false, name: "Виртуальные визитки"}
9: {column: "network_images", state: false, name: "Картинки РСЯ"}
10: {column: "site_links", state: false, name: "Быстрые ссылки"}
11: {column: "time_targeting", state: true, name: "Временной таргетинг"}
12: {column: "first_special", state: true, name: "1спец, кол‑во"}
13: {column: "total_special", state: true, name: "Спец, кол‑во"}
14: {column: "total_guarantee", state: true, name: "Гарантия, кол‑во"}
15: {column: "total_dynamic", state: true, name: "Динамика, кол‑во"}
16: {column: "average_bid", state: true, name: "Средняя ставка"}
17: {column: "rest", state: true, name: "Бюджет осталось"}
18: {column: "days_rest", state: true, name: "Дней осталось"}
19: {column: "spent", state: true, name: "Расход сегодня"}
Если же я формирую объект, то элементы автоматически сортируются в алфавитном порядке, а мне этого не надо.
ColumnsFilter.prototype.getColumnsList = function() { // Получаем список столбцов, имена, и их состояния по умолчанию исходя из html-разметки
let columns = {};
$('.table-light__head [data-column]').each( function() {
columns[$(this).data('column')] = {
'state': $(this).data('default-state'),
'name': $(this).find('.table-light__head-text').text()
};
});
console.log(columns);
//return columns;
};
Получается такой объект:
average_bid: {state: true, name: "Средняя ставка"}
bid_modifiers: {state: false, name: "Корректировки ставок"}
campaign: {state: true, name: "Кампания "}
campaign_ads_regions: {state: false, name: "Регионы показов"}
days_rest: {state: true, name: "Дней осталось"}
first_special: {state: true, name: "1спец, кол‑во"}
metrica_counters: {state: false, name: "Счетчики метрики"}
network_images: {state: false, name: "Картинки РСЯ"}
position_indicator: {state: true, name: "Клики по позициям за вчерашний день "}
relevant_keywords: {state: false, name: "Дополнительные релевантные фразы"}
rest: {state: true, name: "Бюджет осталось"}
site_links: {state: false, name: "Быстрые ссылки"}
spent: {state: true, name: "Расход сегодня"}
state: {state: true, name: "Состояние"}
strategy_in_direct: {state: false, name: "Стратегия в Директе"}
time_targeting: {state: true, name: "Временной таргетинг"}
total_dynamic: {state: true, name: "Динамика, кол‑во"}
total_guarantee: {state: true, name: "Гарантия, кол‑во"}
total_special: {state: true, name: "Спец, кол‑во"}
vCards: {state: false, name: "Виртуальные визитки"}
Как сохранить порядок элементов как при формировании массива?