【发布时间】:2014-02-23 21:01:32
【问题描述】:
我正在尝试查找数组中最大的项目。
使用直截了当、简单、干净、优雅、快速的方法来解决问题非常简单——迭代数组:
private GetMaxValue(data: Array<RealtimeDataPoint>): number {
if (data.length === 0)
return 0;
var maxValue = data[0].Value;
for (var i: number = 1; i < data.length; i++) {
if (data[i].Value > maxValue)
maxValue = data[i].Value;
}
return maxValue;
}
但这并不酷
然后,我想尝试使用.reduce来解决问题,而不是使用简单的方法来解决问题:
private GetMaxValue(data: Array<RealtimeDataPoint>): number {
var pt: RealtimeDataPoint = data.reduce(function (previousValue: RealtimeDataPoint, currentValue: RealtimeDataPoint, currentIndex: number, array: Array<RealtimeDataPoint>): RealtimeDataPoint {
if (currentValue.Value > previousValue.Value)
return currentValue;
else
return previousValue;
});
if (pt != null)
return pt.Value;
else
return 0;
}
它很棒,而且它可以编译。但它在运行时崩溃:
对象不支持此操作
这似乎表明var pt: RealtimeDataPoint = data.reduce(...) 行上的某些东西不起作用,因为它停在了那一行:
它不支持的不是.reduce 成员,因为它就在那里。
那么,两个问题:
- 我的语法有什么问题?
- 为什么 TypeScript 没有意识到我的语法有问题?
奖金聊天
- Internet Explorer 11
- 铬 32
【问题讨论】:
-
您使用的是哪个浏览器?您是否尝试过在其他代码中运行您的代码?
标签: javascript typescript