将数组中对象的最大值显示为两个最大值
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 与 spread
和 array.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';
}
我有一个来自 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 与 spread
和 array.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';
}