Middle
/* Reikia parašyti funkciją, kuri suskaičiuoja visų skaitinių reikšmių sumą masyve. Galiojančios skaitinės reikšmės taip pat yra eilutės, kurios prasideda skaitmenimis. Tokiu atveju, šios pradžios skaitmenų sekos reikia naudoti kaip skaitinę reikšmę. Masyvas gali būti bet kurio duomenų tipo ir nebūti plokščias. **Negalima naudoti įmontuotų metodų kaip .flat, .flatMap** */ function sum(arr) { // ... } console.log(sum([1, 'x', '2x', ['3', ['x2', '5']]]));
sobes.tech AI
Atsakymas iš AI
javascript function sum(arr) { let total = 0;
function helper(a) { for (const item of a) { if (typeof item === 'number') { total += item; } else if (typeof item === 'string') { const match = item.match(/^\d+/); if (match) { total += Number(match[0]); } } else if (Array.isArray(item)) { helper(item); } // Другие типы игнорируем } }
helper(arr); return total; }
console.log(sum([1, 'x', '2x', ['3', ['x2', '5']]])); // 11
Функция рекурсивно обходит массив, проверяет каждый элемент:
- Если число — добавляет к сумме.
- Если строка, пытается извлечь начальную последовательность цифр и добавить её.
- Если массив — рекурсивно вызывает себя.
- Остальные типы игнорируются.
Так мы считаем сумму всех числовых значений и строк, начинающихся с цифр, без использования `.flat` или `.flatMap`.