После объединения вашего связанного списка в массив, вы можете использовать Array.prototype.reduce()
с аккумулятором, который является кортежем min
и max
, начиная с начальных значений Infinity
и -Infinity
соответственно, чтобы соответствовать реализациям Math.min()
и Math.max()
:
const object = {
value: 1,
children: {
value: 10,
children: {
value: 2,
children: {
value: 5,
children: null
}
}
}
}
const flat = o => o == null || o.value == null ? [] : [o.value, ...flat(o.children)]
const [min, max] = flat(object).reduce(
([min, max], value) => [Math.min(min, value), Math.max(max, value)],
[Infinity, -Infinity]
)
console.log(min, max)