function func() {
let arr = [10, 20, 30, 50, 235, 3000];
for(let i = 0; i < arr.length; i++) {
let currentElem = arr[i];
currentElem = String(currentElem);
if(currentElem[0] == 1 || currentElem[0] == 2 || currentElem[0] == 6) {
console.log(currentElem);
}
}
}
ques4();
arr.filter(num => ['1','2','5'].includes(num.toString()[0])
Код работает, но не знаю костыльный ли он
// вместо
if(currentElem[0] == 1 || currentElem[0] == 2 || currentElem[0] == 6) {
// можно
if ([1, 2, 5].includes( +currentElem[0])) {
// вместо
for(let i = 0; i < arr.length; i++) {
let currentElem = arr[i];
// можно
arr.forEach((currentElem) => {
// что-то делать с переменной currentElem
})
// получаем 1-ю цифру делением на 10 снова и снова
// работает только для положительных чисел
const first = (x) => x < 10 ? x : first(Math.floor(x / 10));
const valid = [1, 2, 5]; // допустимые первые цифры
const result = [10, 20, 30, 50, 235, 3000]
.filter((item) => valid.includes(first(item)));
console.log(result); // [10, 20, 50, 235]
const numbers = Array.from({ length: 1e2 + 1 }, (_, index) => index);
const log = (value, base) => Math.log(value) / Math.log(base);
const numbersStartsWith = (numbers, starts) => numbers.filter(number => {
const divider = Math.pow(10, Math.floor(log(Math.abs(number), 10)));
const digit = Math.floor(number / divider);
return starts.includes(digit);
});
const filtered = numbersStartsWith(numbers, [1, 2, 5]);
console.log(filtered);
// [1, 2, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 100]