Просто чтобы прояснить проблему (на случай, если я неправильно понял). Глядя на столбец 9 в качестве примера. Если вы сейчас сортируете эти данные, вы увидите следующее:
Значения отсортированы не так, как ожидалось.
Что вы хотите см. вот это:
Для этого я внес следующие изменения:
1) В конце я добавил 3 новых столбца вашего "columns"
раздела:
{ "data": "hired", "visible": false },
{ "data": "fired", "visible": false },
{ "data": "staffing", "visible": false }
Это столбцы 11, 12, 13 - но их индексы 10, 11, 12.
2) Я добавил новый "orderData"
элемент к трем столбцам, которые содержат дополнительные данные, которые вы хотите игнорировать:
{"data": null, "orderData": [ 10 ], render: ... // the "hired" data
{"data": null, "orderData": [ 11 ], render: ... // the "fired" data
{"data": null, "orderData": [ 12 ], render: ... // the "staffing" data
Это означает, что «нанятый» столбец будет использовать данные в индексе столбца 10 в качестве данных сортировки. Но столбец индекса 10 скрыт, поэтому пользователи его не видят. И этот подход повторяется для дополнительных 2 столбцов.
Заключительное примечание:
Я внес небольшие изменения в ваш JSON, чтобы сделать его действительным JSON:
Например:
'city': "NewYork", // invalid
"city": "NewYork", // valid
Вот что я в итоге использовал:
let data = [{
"city": "NewYork",
"deltaFired": 0,
"deltaHired": 0,
"deltaStaffing": "2",
"espGroup": 1,
"fired": 9,
"hired": 0,
"hr": "Петренко",
"ourShort": "Магазин 3",
"rd": "Пузатенко",
"shr": "65.0",
"staffing": "68",
"vacancy": "29.5"
}, {
"city": "LosSantos",
"deltaFired": 0,
"deltaHired": 0.5,
"deltaStaffing": "1",
"espGroup": 1,
"fired": 2,
"hired": 9.4,
"hr": "Сидоренко",
"ourShort": "Магазин 4",
"rd": "Петренко",
"shr": "125.0",
"staffing": "69",
"vacancy": "45.3"
}, {
"city": "Kiev",
"deltaFired": 0,
"deltaHired": 0,
"deltaStaffing": "1",
"espGroup": 1,
"fired": 6,
"hired": 9.7,
"hr": "Выасильченко",
"ourShort": "Магазин 1",
"rd": "Иваненко",
"shr": "109.0",
"staffing": "29.39",
"vacancy": "49.0"
}, {
"city": "Kiev",
"deltaFired": 0,
"deltaHired": 0,
"deltaStaffing": "1",
"espGroup": 1,
"fired": 6.2,
"hired": 9,
"hr": "Выасильченко",
"ourShort": "Магазин 1",
"rd": "Иваненко",
"shr": "109.0",
"staffing": "2.6",
"vacancy": "49.0"
}, {
"city": "Kiev",
"deltaFired": 0,
"deltaHired": 0,
"deltaStaffing": "1",
"espGroup": 1,
"fired": 5.9,
"hired": 5.5,
"hr": "Выасильченко",
"ourShort": "Магазин 1",
"rd": "Иваненко",
"shr": "109.0",
"staffing": "39",
"vacancy": "49.0"
}, {
"city": "Kiev",
"deltaFired": 0,
"deltaHired": 0,
"deltaStaffing": "1",
"espGroup": 1,
"fired": 6,
"hired": 9.5,
"hr": "Выасильченко",
"ourShort": "Магазин 1",
"rd": "Иваненко",
"shr": "109.0",
"staffing": "29.94",
"vacancy": "49.0"
}, {
"city": "Kiev",
"deltaFired": 0,
"deltaHired": 0,
"deltaStaffing": "1",
"espGroup": 1,
"fired": 6,
"hired": 9,
"hr": "Выасильченко",
"ourShort": "Магазин 1",
"rd": "Иваненко",
"shr": "109.0",
"staffing": "29.987",
"vacancy": "49.0"
}];