Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Изменить порядок свойств объектов в большом массиве (https://javascript.ru/forum/misc/60614-izmenit-poryadok-svojjstv-obektov-v-bolshom-massive.html)

Keramet 10.01.2016 23:57

Цитата:

Сообщение от Lemme (Сообщение 403227)
Ох уж этот хаос, а если пару месяцев в код смотреть не будешь, потом разберешься?=)

ну я стараюсь комментарии оставлять (что делает функция, для чего какие переменные). Ну и параллельно изучаю работы зубров JS (например, рони) :write: , чтоб корректировать свой стиль программиста

рони 11.01.2016 00:35

Цитата:

Сообщение от Keramet
поясните зачем тут b: insertRow(b)?

b индекс в какое место по порядку добавить строку (можно не указывать, если это не Google Chrome)
если ничего не добавить то Chrome считает индекс = 0 , остальные добавляют в конец строк индекс = length

Keramet 11.01.2016 00:52

рони,
понял, спасибо!

caetus 11.01.2016 04:34

если можно изменить html код и есть вариант что порядок будет меняться тогда делай так .

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	
	
<table border="1">
    <thead>
        <tr id="tab">
            <th data-info="timestamp">Дата</th>
            <th data-info="id">№ заказа</th>
            <th data-info="user_id">ID покупателя</th>
            <th data-info="total">Общая сумма</th>
            <th data-info="typical">Обычные продажи</th>
            <th data-info="recommended">Рекомендованные продажи</th>
        </tr>
    </thead>
 
    <tbody>
    </tbody>
</table>
</body>

<script>

function f (tab) {
return [].map.call(tab.children, function (elem) {
 	return elem.getAttribute('data-info') // или elem.dataset.info IE11+
 })
}

alert(f(document.getElementById('tab')))

</script>
</html>

laimas 11.01.2016 14:19

Цитата:

Сообщение от Keramet
Проблема в том, что заголовок таблицы не соответствует порядку полей в объектах.

Данные наверное из базы, значит в запросе перечислите поля в том порядке, в котором они нужны на клиенте. Если запрос возвращает большее число колонок, а клиенту нужна часть из них, то срез массива от нулевого по длину необходимую. И не надо мудрить на клиенте.

Keramet 11.01.2016 14:22

caetus,
по идее - html менять нельзя

Keramet 11.01.2016 14:23

Цитата:

Сообщение от laimas (Сообщение 403251)
Данные наверное из базы, значит в запросе перечислите поля в том порядке, в котором они нужны на клиенте. Если запрос возвращает большее число колонок, а клиенту нужна часть из них, то срез массива от нулевого по длину необходимую. И не надо мудрить на клиенте.

данные в виде файла data.js:
var ordersList = [
{id: 5070992, user_id: 29073781, timestamp: 1435092870, total: 1714, recommended: 0, typical: 1714 }, 
{id: 5070993, user_id: 33963628, timestamp: 1435092881, total: 10290, recommended: 0, typical: 10290 }, 
{id: 5070994, user_id: 33963648, timestamp: 1435092882, total: 2427, recommended: 0, typical: 2427 }, 
{id: 5070996, user_id: 33963559, timestamp: 1435092974, total: 1299, recommended: 0, typical: 1299 }, 
{id: 5070998, user_id: 33963814, timestamp: 1435093028, total: 2090, recommended: 0, typical: 2090 }, 
....
]

laimas 11.01.2016 14:28

Цитата:

Сообщение от Keramet
данные в виде файла data.js:

И он родился одновременно с рождением самого Javascript? Кто породил этот файл, если вы, скрипт ваш, то почему не в нужном порядке?

рони 11.01.2016 14:38

Цитата:

Сообщение от laimas
значит в запросе перечислите поля в том порядке, в котором они нужны на клиенте.

разве это возможно с обьектом? вроде порядок ключей в обьекте не регламентирован.

laimas 11.01.2016 14:45

Нет на сервере объектов пока я сам не сконвертирую массив в объект, это просто ключи. Да и не в этом соль, из базы ли берется, а если файл, то тем более. Файл однако получает сервер, и даже если этот файл обновляется раз в день, то выгоднее на сервере подготовить нужный порядок один раз при сохранении файла, чем при каждом запросе клиента перебирать 60 000 элементов для установления порядка. Это же просто лишняя операция.

На сервере функций пересечения массивов хоть отбавляй, что позволяет сделать нужный порядок в любой ситуации и это плевое дело.


Часовой пояс GMT +3, время: 11:46.