Как вывести максимальное значение в Map/Set
let ma = new Set([[3],[5],[7]])
for(let i of ma){
alert(Math.max(...i))
}
Что в моем коде неправильно? Также пробовал преобразовать в массив, но все равно не получалось
Ответы (2 шт):
Автор решения: 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.