import pug from 'pug';
//...
template: pug.render(`span {{ tr(lang).title }} `)
$APPLICATION->RestartBuffer();
die();
const everyNth = (arr, n) => arr.filter((e, i) => i % n === 0);
// применение
everyNth([0, 11, 22, 33, 44, 55, 66, 77], 7) // [0, 77]
for()
:function everyNth(arr, n) {
const result = [];
for (let i=0; i<arr.length; i+=n) result.push(arr[n]);
return result;
}
for()
быстрее в 7 раз!x
- свойство экземпляра, другой - статический геттер:class Base {
constructor() {
this.x = 3;
}
static get x() {
return 1.5;
}
}
function Base() {
this.x = 3;
}
Base.x = 1.5;
// или
function Base() {}
Base.prototype.x = 3;
Base.x = 1.5;
class Base {
x = 3;
static x = 1.5;
}
Для меня по логике перед loohahead должны быть символы
^
(?=.*\d)(?=.*[a-z])(?=.*[A-Z])
(?=.*\d)
- обязательно впереди от начала строки должна быть хотябы 1 цифра, не важно в каком именно месте.*
, где .
- любой символ и и квантор *
0 или "много" раз, а потом цифра \d
(?=.*[a-z])
- обязательно 1 маленькая буква латинского алфавита(?=.*[A-Z])
- обязательно 1 большая буква латинского алфавитаИ второй вопрос. Почему этот регэксп работает в случае если меняешь местами такие символы:
abC123, Cab123, 123Cab - то есть порядок прописных строчных и цифр не важен, но ведь группы lookahead идут по порядку
(?=.*\d)(?=.*[a-z])(?=.*[A-Z])
после слова пример-let obj = {
name: "",
value: 0
}
let newArr = new Array(arr.length).fill(obj);
let newArr = Array.from({length: 10}, function() { return { name: "", value: 0} })
let result = arr.map( (item, index) => { return item === 1 ? index : 0 }).filter( item => { return item !== 0});
arr.map((n, i) => n ? i : null).filter(n => n !== null)
// или
arr.map((n, i) => n ? i : NaN).filter(n => n === n)
// или
arr.map((n, i) => !!n && i).filter(Number.isInteger)
// или
arr.map((n, i) => !n || i).filter(n => n !== !0)
arr.reduce((acc, n, i) => n ? [ ...acc, i ] : acc, [])
// или
arr.reduce((acc, n, i) => (n && acc.push(i), acc), [])
for (let i = arr.length; i--;) {
if (arr[i]) {
arr[i] = i;
} else {
for (let j = i; ++j < arr.length; arr[j - 1] = arr[j]) ;
arr.pop();
}
}
// или
arr.reduceRight((_, n, i, a) => n ? a[i] = i : a.splice(i, 1), 0);
// или
arr.splice(0, arr.length, ...любое_выражение_с_map/filter_или_reduce_из_показанных_выше);
// или
arr.length -= arr.reduce((acc, n, i, a) => (
a[i - acc] = i,
acc + !n
), 0);