Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2021, 11:04
Gm5 Gm5 вне форума
Интересующийся
Отправить личное сообщение для Gm5 Посмотреть профиль Найти все сообщения от Gm5
 
Регистрация: 10.07.2021
Сообщений: 19

Сумма чисел многомерного массива.
Прохожу сейчас многомерность. Решил одно-, двух- и трёхмерный массив, а вот этот не могу! Не пойму вроде и правильно написал, но что-то не так! Помогите разобраться, где я ошибся? Если не затруднит, хотелось бы увидеть для сравнения правильное решение именно через циклы, без методов флет, редьюс и подобных.

<!DOCTYPE HTML>
<html >
<head>
    <meta charset="utf-8">
    <title>Тег IMG</title>
</head>
<body>



<script>
let arr = [
  [1, 2, 3, [4, 5, [6, 7]]],
  [8, [9, 10]]
];
let sum = 0;
for (let i = 0; i < arr.length; i++) {
  sum += arr[i];
  for (let j = 0; j < arr[i].length; j++) {
    sum += arr[i][j];
    for (let k = 0; k < arr[i][j].length; k++) {
      sum += arr[i][j][k];
    }

  }
}
console.log(sum);

</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2021, 11:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Gm5
хотелось бы увидеть для сравнения правильное решение именно через циклы
Как вариант...

const arr = [
  [1, 2, 3, [4, 5, [6, 7]]],
  [8, [9, 10]]
];
alert(sum(arr));

function sum(arr) {
	let s = 0
	for (let i = 0; i < arr.length; i++) {
		if (typeof arr[i] === 'object') {
			s += sum(arr[i])
			continue
		}
		s += arr[i]
	}
	return s
}
Ответить с цитированием
  #3 (permalink)  
Старый 04.08.2021, 08:55
Gm5 Gm5 вне форума
Интересующийся
Отправить личное сообщение для Gm5 Посмотреть профиль Найти все сообщения от Gm5
 
Регистрация: 10.07.2021
Сообщений: 19

ksa,
Спасибо! ))
Ответить с цитированием
  #4 (permalink)  
Старый 04.08.2021, 14:28
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,700

В современном JS это делается одной строкой для любых размерностей

let s = arr.flat(Infinity).retuce ((a,v) => a+v, 0);
Ответить с цитированием
  #5 (permalink)  
Старый 04.08.2021, 15:06
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

voraa,
Сообщение от Gm5
хотелось бы увидеть для сравнения правильное решение именно через циклы, без методов флет, редьюс и подобных.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить из многомерного массива? nastya97core Общие вопросы Javascript 8 11.05.2021 10:42
Вот такое задание, но я только в начале пути вэб разработки, подскажите как? Dixlofos Общие вопросы Javascript 31 22.10.2018 01:48
Создать три массива случайных чисел DVV Элементы интерфейса 2 24.09.2018 16:06
Обход многомерного массива с задержкой после каждого цикла Walk Общие вопросы Javascript 2 14.08.2017 16:17
Найдите сумму четных чисел из массива yaparoff Общие вопросы Javascript 3 18.01.2017 09:37