date.match(/\d+/g).map(Number) // Array(2017, 5, 16, 13, 45)
let regexpr = /(\d{4})-(\d{2})-(\d{2})\s(\d\d):(\d\d)/
Optional chaining not valid on the left-hand side of an assignment
let object = {}; object?.property = 1; // Uncaught SyntaxError: Invalid left-hand side in assignment
function Juice(kind, price){
let kind = kind; // это будет приватным свойством
this.price = price; // публичное свойство
this.kind = () => kind; //это публичный метод
this.hello = function(){
console.log(`Thats ${kind} juice`)
}
}
Juice.prototype.world = function(){
//приватное свойство kind тут не доступно, потому обратимся к публичному методу
console.log(`Juice kind: ${this.kind()}`)
}
// шаблон "фабрика"
Juice.apple = ( price ) => new Juice('apple', price);
Juice.orange = ( price ) => new Juice('orange', price);
let littleAppleJuice = Juice.apple(100),
hugeBananaJuice = new Juice('banana', 500);
littleAppleJuice.hello();
littleBananaJuice.world();
changeAlert: function() {
console.log(789);
return new Promise((resolve, reject)=>{
let timerId = setTimeout(() => {
if (this.alertArr.length > 0) {
this.alertCurrent = this.alertArr[0];
console.log(this.alertCurrent);
} else {
this.alertCurrent = null;
}
this.alertArr.splice(0, 1);
resolve()
if (false) reject("error description");
}, 5000);
})
}
function doSomethingWith(array){
let arr = [...array]
for (let i = 0, end = arr.length - 1; i < end; i++)
if(arr[i+1] - arr[i] > 1){
arr.push(arr.splice(i,1)[0])
i-=2;
}
return arr
}
function fun(hh,mm,ss=0){
// если часы даны в формате 24 часов,
// приводим к формату 12
hh = hh % 12;
// на сколько градусов относительно
// нуля отклонены стрелки?
const dm = ( ss / 60 + mm ) * 6,
dh = hh * 30 + dm / 12
// dh и dm будет расстоянием, пройденное стрелками
// прибавим к dh 360 градусов если dh < dm
// Затем найдем оставшееся расстояние:
const r = dh - dm + (dh > dm ? 0 : 360),
// и скорость сближения в минуту:
s = 6 - 0.5
// скорость минутной стрелки 6 градусов
// часовой - 0.5°/минуту
// возвращаем оставшееся время
return r / s
}
const estimateTime = fun(13,50,15),
m = Math.floor(estimateTime),
s = Math.round((estimateTime - m) * 60)
console.log(`Стрелки сойдутся через через ${m} мин. и ${s} сек.`)