Node-Red и .equals is not a function или как сравнить два массива
Ткните носом пожалуйста. Что не так?
В Node Red пишу функцию для сравнения двух массивов. Первый bin ко мне прилетает, я его преобразую TempbinArray, беру из него то, что мне надо и хочу сравнить с одним из шаблонов TempbinArray1. Не пойму, почему оператор .equals не работает. Появляется ошибка TypeError: TempbinArray.equals is not a function. Хотя в консоле вот это работало: console.log( [1,0,1].equals([1,0,1]) );
Мой код
var msg1 = {
payload: ""
};
var TempbinArray1 = [0, 0, 0]; // Период выхода на всязь - 5 мин
var TempbinArray2 = [1, 0, 0]; // Период выхода на всязь - 15 мин
var TempbinArray3 = [0, 1, 0]; // Период выхода на всязь - 30 мин
var TempbinArray4 = [1, 1, 0]; // Период выхода на всязь - 1 час
var TempbinArray5 = [0, 0, 1]; // Период выхода на всязь - 6 часов
var TempbinArray6 = [1, 0, 1]; // Период выхода на всязь - 12 часа
var TempbinArray7 = [0, 1, 1]; // Период выхода на всязь - 24 часа
var res = 0;
var bin = ("00000000" + (parseInt(msg.payload, 16)).toString(2)).substr(-8);
//var bin = "10000100";
binArray = Array.from(bin); //делаем новый массив
if (binArray[0] == 0) {
msg1.payload = "OTTA";
} else msg1.payload = "ABP";
var TempbinArray = binArray.slice(2, 5); // Выбираем из массива значения соответствующие времени выхода устройства на связь
// как я думаю проблема строчкой ниже
if (TempbinArray.equals([0, 1, 0])) {
msg2.payload = "5 мин";
} else {
msg2.payload = "не сконфигурировано";
}
return [msg1, msg2, msg3, msg4, msg5, msg6, msg7];
Ответы (1 шт):
Автор решения: stepUP
→ Ссылка
Вопрос разрешился. Дело было в определении функции перед ее использованием
Array.prototype.equals = function equals(array){ return this.length == array.length && this.every((v,i)=>array[i]==v); };
Большое спасибо DiD за подсказку. Ссылка на пост. Определение вставил перед используемой функцией.