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