Показать сообщение отдельно
  #17 (permalink)  
Старый 17.05.2021, 13:51
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Без рекурсии в 8-10 раз быстрее в node
const ar = Array.from({length: 1_000_000}, (_, i) => i)
let b;

console.time('V1');
b = ar.filter(num => [1, 2, 5].includes(+String(num).charAt(0)));
console.timeEnd('V1');

b = [];
console.time('V2');
for (let i = 0; i < ar.length; i++) {
    const as = String(ar[i])[0];
    if (as === '1' || as === '2' || as === '5') b.push(ar[i])
}
console.timeEnd('V2');
console.time('V3');
b = ar.filter(num => /^[125]/.test(num));
console.timeEnd('V3');
b = [];
const getFirstNumber = num => {
    while (num > 9) num = num / 10 | 0;
    return num;
}
console.time('V4');
for (let i = 0; i < ar.length; i++) {
    let f = getFirstNumber(ar[i]);
    if (f === 1 || f === 2 || f === 5) b.push(ar[i])
}
console.timeEnd('V4');

и в браузерах уже V4 впереди планеты

Последний раз редактировалось Vlasenko Fedor, 17.05.2021 в 13:54.
Ответить с цитированием