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`.