将数组中对象的最大值显示为两个最大值

Showing maximum value of an object in an array when it as two max values

我有一个来自 api 响应的数组,它的 objects.I 需要找到具有最大总数的值,我已经显示了它 我无法解决它,当有两个total.Is的最大值有什么解决办法吗?

myArray[
{time: "2018-12-02", total: 25, percentage: 20, averageTime: 20},
{time: "2018-13-02", total: 25, percentage: 20, averageTime: 20},
{time: "2018-14-02", total: 35, percentage: 25, averageTime: 25},
{time: "2018-16-02", total: 65, percentage: 60, averageTime: 20},
{time: "2018-17-02", total: 40, percentage: 20, averageTime: 20},
{time: "2018-18-02", total: 65, percentage: 20, averageTime: 20},
{time: "2018-18-02", total: 35, percentage: 23, averageTime: 20}
];

我试过这样的 reduce 函数:

var data =[];
data.reduce((max, p) => p.total > max ? p.total : max, data[0].total);

您可以将 Math.max 与 spreadarray.prototype.map 一起使用:

var myArray = [
{time: "2018-12-02", total: 25, percentage: 20, averageTime: 20},
{time: "2018-13-02", total: 25, percentage: 20, averageTime: 20},
{time: "2018-14-02", total: 35, percentage: 25, averageTime: 25},
{time: "2018-16-02", total: 65, percentage: 60, averageTime: 20},
{time: "2018-17-02", total: 40, percentage: 20, averageTime: 20},
{time: "2018-18-02", total: 65, percentage: 20, averageTime: 20},
{time: "2018-18-02", total: 35, percentage: 23, averageTime: 20}
];

var max = Math.max(...myArray.map(e => e.total));

console.log(max);

你可以这样做:

想法:

  • 创建一个以 total 作为键和一个变量来保存最大值的 hashMap。
  • 检查键是否存在,如果不存在,将其初始化为数组。
  • 将当前对象压入此数组。
  • 获取键为max的数组,你将得到所有最大总数的值。

现在您已经有了整个对象,您可以迭代并显示任何必要的值。

var myArray = [{time: "2018-12-02", total: 25, percentage: 20, averageTime: 20},
{time: "2018-13-02", total: 25, percentage: 20, averageTime: 20},
{time: "2018-14-02", total: 35, percentage: 25, averageTime: 25},
{time: "2018-16-02", total: 65, percentage: 60, averageTime: 20},
{time: "2018-17-02", total: 40, percentage: 20, averageTime: 20},
{time: "2018-18-02", total: 65, percentage: 20, averageTime: 20},
{time: "2018-18-02", total: 35, percentage: 23, averageTime: 20}]

var max = 0;
var hashMap = myArray.reduce((acc, p) => {
  max = Math.max(max, p.total);
  acc[p.total] = acc[p.total] || [];
  acc[p.total].push(p);
  return acc;
}, {});

console.log(hashMap[max]);

只有时间价值

var myArray = [{time: "2018-12-02", total: 25, percentage: 20, averageTime: 20},
{time: "2018-13-02", total: 25, percentage: 20, averageTime: 20},
{time: "2018-14-02", total: 35, percentage: 25, averageTime: 25},
{time: "2018-16-02", total: 65, percentage: 60, averageTime: 20},
{time: "2018-17-02", total: 40, percentage: 20, averageTime: 20},
{time: "2018-18-02", total: 65, percentage: 20, averageTime: 20},
{time: "2018-18-02", total: 35, percentage: 23, averageTime: 20}]

var max = 0;
var hashMap = myArray.reduce((acc, p) => {
  max = Math.max(max, p.total);
  acc[p.total] = acc[p.total] || [];
  acc[p.total].push(p.time);
  return acc;
}, {});

console.log(hashMap[max]);

您可以找到数组中的最大值'total',然后找到数组中具有该最大值的所有元素。

var myArray = [
{time: "2018-12-02", total: 25, percentage: 20, averageTime: 20},
{time: "2018-13-02", total: 25, percentage: 20, averageTime: 20},
{time: "2018-14-02", total: 35, percentage: 25, averageTime: 25},
{time: "2018-16-02", total: 65, percentage: 60, averageTime: 20},
{time: "2018-17-02", total: 40, percentage: 20, averageTime: 20},
{time: "2018-18-02", total: 65, percentage: 20, averageTime: 20},
{time: "2018-18-02", total: 35, percentage: 23, averageTime: 20}
];

var max = Math.max(...myArray.map(e => e.total));
var time = myArray.filter(item => item.total == max);

console.log(time);

一种可能的方法:

function getMaxValue(myArray) {
    var totals = myArray.map(x => x.total);
    var max = filter(x => x == Math.max(totals));
    return max.length == 1 ? max[0] : 'unable to solve it';
}