Моя функция в основном получает таблицу регистрации (объекты), давайте назовем его tblheaters , каждая из которых соответствует устройству. Затем он несколько раз зацикливается на этом, изменяя некоторые значения в зависимости от их рабочего режима и свойств. Мне нужно вывести модифицированную таблицу как есть, я не могу ее прибегнуть.
Код: Выделить всё
for (var idx = 0; idx < tblHeaters.length; idx++)
if (tblHeaters[idx].status == "ON")
{
tblHeaters[idx].relay = true;
}
else if (tblHeaters[idx].status == "OFF")
{
tblHeaters[idx].relay = false;
}
else // AUTO
{
indexes_auto.push(idx);
};
Если я хотел сортировать tblheaters , я знаю, что это было бы легко, что -то вроде:
Код: Выделить всё
tblHeaters.sort( (a, b) => { a.priority - b.priority });
< /code>
Но то, что я хочу сортировать, это indexes_auto. Это должно быть что -то вроде этого: < /p>
indexes_auto.sort( (a, b) => { tblHeaters[a].priority - tblHeaters[b].priority } );
< /code>
Конечно, это не сработает, потому что из -за объема переменной в анонимной функции TblHeater не определен.thisКод: Выделить всё
indexes_auto.sort( (a, b, table) => { table[a].priority - table[b].priority }, tblHeaters);
< /code>
или это: < /p>
indexes_auto.sort( (a, b, scope) => { this.bind(scope); tblHeaters[a].priority - tblHeaters[b].priority }, this);
indexes_auto.sort( (a, b) => { gobal.tblHeaters[a].priority - global.tblHeaters.priority }, this);
< /code>
Но я уверен, что все эти способы невозможны, или они являются плохими практиками программирования. Я мог бы просто реализовать пузырьковую сортировку вручную внутри функции и не иметь этой проблемы, но она была бы неэлегантной, неэффективной и трудно поддерживать.>
Подробнее здесь: https://stackoverflow.com/questions/795 ... of-indexes
Мобильная версия