Как вывести максимальное значение в Map/Set

 let ma = new Set([[3],[5],[7]])
for(let i of ma){
    alert(Math.max(...i))

}

Что в моем коде неправильно? Также пробовал преобразовать в массив, но все равно не получалось


Ответы (2 шт):

Автор решения: WalkMess

 let ma = new Set([[3],[5],[7]])
    alert(Math.max(...ma))

→ Ссылка
Автор решения: Sergey Glazirin

Вы пытаетесь в цикле получать максимальное значение, но на вход передаете только текущее значение.

То есть на первой итерации цикла передаете 3. И пытаетесь получить Math.max(3);

На второй итерации пытаетесь получить Math.max(5). И т.д.

Нужно передавать сразу весь массив значений.

let ma = new Set([
  [3],
  [5],
  [7]
])

alert(Math.max(...ma))

Можно из Map сделать массив и получить максимальное значение

let ma = new Map([
  [1, 3],
  [2, 5],
  [3, 7]
]);

// 1 способ
const arr = [];
ma.forEach(value => {
  arr.push(value)
});

console.log(Math.max(...arr));

// 2 способ
const arr2 = [...ma].map(([name, value]) => value);
console.log(Math.max(...arr2));

// 3 способ
console.log(Math.max(...ma.values()));

Как можно было заметить Math.max() работает с массивом данных. Поэтому если есть возможность хранить и обрабатывать данные в массиве - то стоит этим пользоваться. Советую изучить предназначение типов данных массив, Map, Set.

→ Ссылка