Как получить максимальное значение в объекте относительно нуля?
Подскажите пожалуйста как мне получить максимальное значение ключа d
Из примера ниже видно что значение может быть положительным или отрицательным.
Максимальное это либо положительное максимальное, либо отрицательное относильно 0 (нуля).
И вывести это значение через Math.abs() тоесть положительным, если оно было отрицательное
// образец данных, здесь максимальное d это -574815.2999999998
// так как -574815 от 0 оно больше, чем 26496 от 0
let data = {
1662336000: {
0.0357: {
v: 742397.8,
d: 26496.799999999992
},
0.0352: {
v: 1761799.900000001,
d: -574815.2999999998
}
}
};
Знаю что можно как то через эту функцию, но не понимаю каким образом это можно реализовать
Object.entries(data).reduce((p, c) => {});
Ответы (2 шт):
Автор решения: Danil Apsadikov
→ Ссылка
Для поиска абсолютного максимума в массиве:
const array1 = [1, 2, 4, 3, 0, 10, -11, 3];
const res = array1.reduce(
(previous, current) => {
if (Math.abs(previous) > Math.abs(current)) {
return Math.abs(previous);
} else {
return Math.abs(current);
}
}
);
console.log(res);
Автор решения: Qwertiy
→ Ссылка
Если с переполнением стека не грохнется, то можно так:
let data = {
1662336000: {
0.0357: {
v: 742397.8,
d: 26496.799999999992
},
0.0352: {
v: 1761799.900000001,
d: -574815.2999999998
}
}
}
var res = Math.max(...Object.values(data).flatMap(Object.values).map(x => Math.abs(x.d)))
console.log(res)
А можно так:
let data = {
1662336000: {
0.0357: {
v: 742397.8,
d: 26496.799999999992
},
0.0352: {
v: 1761799.900000001,
d: -574815.2999999998
}
}
}
var res = Object.values(data).flatMap(Object.values).reduce((r, {d}) => Math.max(r, Math.abs(d)), 0)
console.log(res)