Вот откуда возник вопрос: рекурсия выполняется медленнее, но она более читабельна, чем цикл, который выполняется быстрее рекурсии.Спасибо, поржал)
setTimeout(function () {
var counter = 0;
setTimeout(() => counter++, 1000); // через 1с увеличит на 1
console.log(counter); // выведет 0, сразу
setTimeout(() => {
console.log(counter);
nextselect.addClass('same-as-selected').trigger("click");
}, 1400); // через 1.4с "кликнет"
}, 500); // вообще всё начнётся только через пол-секунды
0 - начало
0.5 - начнёт выполняться внешняя ф-я:
зарядятся два таймера, в промежутке выведет 0
0.5 + 1 - counter увеличится на 1
0.5 + 1.4 - еще раз выведется counter, добавится класс, клик
delete sc2;
вам возвращает false, что говорит о том, что операция не была выполненна. Камеры пишут видео на ЖДНеправильно. На ЖД пишет видеорегистратор, а не камеры. Видеорегистратор - это и есть "сервер", который вы хотите велосипедить. В этой схеме китайцы лишь предоставляют белый адрес для доступа к регистратору. Без китайцев можно либо получить белый (и статический) адрес у провайдера, либо арендовать VPS и настроить VPN.
function clone(obj) {
if (obj === null || typeof(obj) !== 'object' || 'isActive' in obj) return obj;
const temp = obj.constructor();
for (let key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
obj['isActive'] = null;
temp[key] = key === 'value' ? 'new value' : clone(obj[key]);
delete obj['isActive'];
}
}
return temp;
}
clone(data);
Object.values(arr.reduce((acc, { id, value }) => {
const type = typeof value;
acc[id] = acc[id] ?? { id };
acc[id][type] = (acc[id][type] ?? 0) + 1;
return acc;
}, {}))