


Задача по JavaScript. Тема: Многомерные массивы
Задача:
let arr = [[1, 2, 3, [4, 5, [6, 7]]], [8, [9, 10]]];
Вручную, без цикла, найдите сумму элементов этого массива.
Сделал так:
let arr = [[1, 2, 3, [4, 5, [6, 7]]], [8, [9, 10]]];
let sum = arr[0][0] + arr[0][1] + arr[0][2] + arr[0][3][0] +
arr[0][3][1] + arr[0][3][2][0] + arr[0][3][2][1] +
arr[0][4][0] + arr[0][4][1][0] + arr[0][4][1][1]
console.log(sum)
Выводит ошибку: Uncaught TypeError: Cannot read properties of undefined (reading '0')
Понял, что ошибка связана с arr[0][4][0], но так и не понял как это исправить.
Подскажите, какое решение у этой задачи (без циклов) и в чём моя ошибка - что я сделал не так?
Без функций и методов
Быдло, не умеющее общаться нормально, без оскорблений и матов - мимо
Задача решена самостоятельна. Вопрос закрыт
Оказывается, внутри основного массива было два массива, а не один. Обращаясь к arr[0][4][0], я обращался к чётвертому элементу в первом массиве, которого в принципе и нет. Вместо этого я написал arr[1][0] и код стал рабочим. В общем, невнимательно просмотрел, где стоят все квадратные скобки
let arr = [[1, 2, 3, [4, 5, [6, 7]]], [8, [9, 10]]];
let sum = 0;
// Обработка первого элемента arr[0]
sum += arr[0][0]; // 1
sum += arr[0][1]; // 2
sum += arr[0][2]; // 3
// Обработка вложенного массива arr[0][3]
sum += arr[0][3][0]; // 4
sum += arr[0][3][1]; // 5
// Обработка вложенного массива arr[0][3][2]
sum += arr[0][3][2][0]; // 6
sum += arr[0][3][2][1]; // 7
// Обработка второго элемента arr[1]
sum += arr[1][0]; // 8
// Обработка вложенного массива arr[1][1]
sum += arr[1][1][0]; // 9
sum += arr[1][1][1]; // 10
console.log(sum); // Выводит 55
Если даже без цикла - так как у тебя никто не делает. Раз нельзя циклом - делают рекурсией. На JS сейчас с этим сейчас возиться не буду, но покажу, так и быть, алгоритмы распаковки глубоких многомерных массивов и нахождения их общей суммы на Python
# распаковка многомерного маcсива рекурсией
arr = [[1, 2, 3, [4, 5, [6, 7]]], [8, [9, 10]]]
result = []
def unpack_array(x):
global result
for i in x:
if not isinstance(i,list):
result += [i]
else:
unpack_array(i)
return result
# сумма массива рекурсией
s = 0
list_ = unpack_array(arr)
def get_rec_sum(x, i=0):
global s
s += x[i]
if i == len(x) - 1:
return s
return get_rec_sum(x, i + 1)
print(get_rec_sum(list_))
55
массивы перебирать надо циклами это ыстрее, жрет меньше памяти, позволяет написать красивый код.
Ну так логично. Элемента 0,4 не существует. Там только элементы 0-3.
Ты наверное пропустил arr[1].
Через рекурсию