Sobes.tech
Middle

/* ყველა რიცხვითი მნიშვნელობის ჯამის გამოთვლის ფუნქციის დაწერა აუცილებელია. მოწინააღმდეგო რიცხვითი მნიშვნელობები ასევე შეიძლება იყოს სტრინგები, რომლებიც იწყება ციფრებით. ამ შემთხვევაში, უნდა გამოიყენოთ ეს დაწყებითი ციფრების სერია როგორც რიცხვითი მნიშვნელობა. მასივი შეიძლება შეიცავდეს ნებისმიერი ტიპის მონაცემებს და არ იყოს სწორი ფორმის. **შეუძლებელია გამოიყენოთ ინტეგრირებული მეთოდები, როგორიცაა .flat, .flatMap** */ function sum(arr) { // ... } console.log(sum([1, 'x', '2x', ['3', ['x2', '5']]]));

sobes.tech AI

პასუხი 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`.