Есть ли элегантный способ сортировать массив индексов? [закрыто]Javascript

Форум по Javascript
Ответить
Anonymous
 Есть ли элегантный способ сортировать массив индексов? [закрыто]

Сообщение Anonymous »

Я пытаюсь построить сложный автоматизм с Nodered, в основном группируя гетерогенные нагреватели и тепловые датчики, и контролируя их с помощью обобщенного узла функции (JavaScript).
Моя функция в основном получает таблицу регистрации (объекты), давайте назовем его 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 [idx] .priority .
Если я хотел сортировать 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
) и примените его с помощью Bind, или передайте копию/ссылку на tblheater . В основном что -то вроде этого: < /p>

Код: Выделить всё

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);
Другой способ - сделать Tblheaters глобальную переменную и сделать что -то вроде:
indexes_auto.sort( (a, b) => { gobal.tblHeaters[a].priority - global.tblHeaters.priority }, this);
< /code>
Но я уверен, что все эти способы невозможны, или они являются плохими практиками программирования. Я мог бы просто реализовать пузырьковую сортировку вручную внутри функции и не иметь этой проблемы, но она была бы неэлегантной, неэффективной и трудно поддерживать.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... of-indexes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»