const arr1 = [[8, 12], [17, 22]];
const arr2 = [[5, 11], [14, 18], [20, 23]];
const result = arr1.reduce((acc, range1) => {
arr2.forEach((range2) => {
const rangeLength1 = range2[1] - range1[0];
const rangeLength2 = range1[1] - range2[0];
if(rangeLength1 < rangeLength2) {
if(rangeLength1 < 0) {
return;
}
acc.push([range1[0], range2[1]]);
return;
}
if(rangeLength2 < 0) {
return;
}
acc.push([range2[0], range1[1]]);
});
return acc;
}, []);
Object.entries(obj).sort((a, b) => b[1] - a[1]).slice(0, 5).map((e) => e[0]);
пробовал через new Set, но видимо не верно понял его работу.
DOP.reduce((acc, obj) => {
if(acc.findIndex((fobj) => fobj.NAME === obj.NAME && fobj.CODE === obj.CODE) === -1) {
acc.push(obj);
}
return acc;
}, []);
[1, 2, 3, 4, 5].sort((a, b) => b % 2 - a % 2 || (a % 2 ? b - a : a - b))
sharp()
.withMetadata()
.jpeg({ quality: 50 })
.toFile(path.join(__dirname, `some/path/${filename}.jpg`));
const sortBy = (arr, property) => {
arr.sort((a, b) => {
if (a[property] < b[property]) return -1;
if (a[property] > b[property]) return 1;
return 0;
});
};
newMinute
если секунды равны нулю, отнимает минуту и делает секунды равные 60 (а должно быть 59, потому что 60 секунд = 0 секунд). Поскольку секунды нигде не уменьшаются (seconds--
), то ты получаешь бесконечный цикл.newMinute
всё равно не будет работать, поскольку ты объявил её через function
и она теряет контекст.newMinute
, либо использовать стрелочную:const newMinute = (timerID) => {//Higher I write when I use arrow function
if (seconds < 1) {
if (minutes < 1) {
this.endTimer(timerID);// don't work maybe due context
return;
}
minutes--;//if I use arrow function minutes don't change
seconds = 59;//also don't change
return;
}
seconds--;
};
[...num+''] = [...`${num}`] = [...num.toString()] = num.toString().split('')
[...`${num}`]
. Просто нагляднее и современнее. new Array(256).fill(0).map((_, i) => i).join(" | ")
и скопируй результат в тип byte.