Javascript 如何在包含数组的数组上使用Math.max.apply

Javascript 如何在包含数组的数组上使用Math.max.apply,javascript,Javascript,我有以下js函数: function Weekday (name, traffic) { this.name = name; this.traffic = traffic; } function mostDays(){ var traffic=[]; traffic[0] = new Weekday('monday',6); traffic[1] = new Weekday('tuesday',5); return traffic; } function mostPopularDays(we

我有以下js函数:

function Weekday (name, traffic) {
this.name = name;
this.traffic = traffic;
}

function mostDays(){
var traffic=[];
traffic[0] = new Weekday('monday',6);
traffic[1] = new Weekday('tuesday',5);
return traffic;
}

function mostPopularDays(week) {    
if(week.length == 0 || week === null) return null;

return Math.max.apply(Math, week['traffic']);
}
如果我说:

 var x = mostDays();
 var test = mostPopularDays(x);

我正在尝试返回6,这是工作日对象中流量的最大值。有没有一种方法可以正确引用它,或者我需要在一个循环中执行所有这些操作?

您可以映射对象的所需属性,然后获取最大值

功能工作日(名称、流量){
this.name=名称;
这个。交通=交通;
}
函数mostDays(){
var流量=[];
交通量[0]=新的工作日(6月6日,星期一);
交通量[1]=新的工作日(5号星期二);
返程交通;
}
函数mostPopularDays(周){
如果(!week.length)返回空值;
return Math.max.apply(Math,week.map(函数(o){return o.traffic;}));
}
var x=最长天数();
var测试=最大使用天数(x);

控制台日志(测试)
如果要返回流量最大的日期,则
Math.max
无法自行返回,因为它只返回最高流量(如果您正确编码),而不是当天

您可以使用
find
查找流量最高的一天:

var maxTraffic = Math.max(...week.map(day => day.traffic));
return week.find(day => day.traffic === maxTraffic);

另一个选项是指定对象的默认值:

功能工作日(名称、流量){
this.name=名称;
这个。交通=交通;
}
Weekday.prototype.valueOf=函数(){返回this.traffic}
var天数=[新工作日(6月6日星期一),新工作日(5月5日星期二)]
console.log(Math.max.apply(0天))
console.log(Math.max(…days))
Try
Math.max.apply(Math,week.map(day=>day.traffic))