childNodes
- это коллекция всех нод, а не только HTML элементов, поэтому нужно использовать свойство children
, а не childNodes
sectorIndex
можно переписать так:function sectorIndex(element) {
return Array.prototype.findIndex.call(element.parentNode.children, (el) => el === element)
}
function f1(array, format) {
array[Symbol.iterator] = function* () {
delete this[Symbol.iterator];
for (const object of this.values()) {
yield format.replace(/%(.+?)%/g, (_, key) => object[key]);
}
};
return [...array];
};
console.log(f1(employees, "Name: %name%, age: %age%"));
function f2(array, format) {
const result = [];
return (function f(i) {
if (i === array.length) return result;
result.push(format.replace(/%(.+?)%/g, (_, key) => array[i][key]));
return f(i + 1);
})(0);
}
console.log(f2(employees, "Name: %name%, age: %age%"));
setInterval(start,1000)
Это не будет срабатывать ровно раз в секунду https://learn.javascript.ru/settimeout-setinterval...
e.__proto__.turn = false
писать что либо в прототип объекта - очень плохой способ хранить состояние таймера https://learn.javascript.ru/prototype-inheritance
Есть более простой и лаконичный способ перевести секунды в минуты и часы, например так: https://stackoverflow.com/a/1322798