Javascript将最大运算符应用于所有元素的累积结果



我想重写一个python代码来计算max的累积结果。我参考了numpy文档

输入:[7200,7050,7300,7500,7440,7200,7300,7280,7400]

输出:[7200, 7200, 7300, 7500, 7500, 7500, 7500, 7500, 7500]

我知道我可以在一个循环中完成,但如果可能的话,我正在寻找一个紧凑的单行解决方案

类似的东西或多或少是内联的:

var max = 0;
var input = [7200, 7050, 7300, 7500, 7440, 7200, 7300, 7280, 7400];
var output = input.map(function(e) {
return max > e ? max : max = e;
});
console.log(output);

受Pierre答案的启发,这里有另一个带有地图的单线解决方案

var input = [7200, 7050, 7300, 7500, 7440, 7200, 7300, 7280, 7400];
var output = input.map(function(e, i) {
return Math.max(...input.slice(0, i + 1))
});
console.log(output);

Array.from():的单线解决方案

var arr = [7200, 7050, 7300, 7500, 7440, 7200, 7300, 7280, 7400];
var output = Array.from({length:arr.length}, (el,i) => Math.max(...arr.slice(0,i+1)))
console.log(output);

这里有一个单行替代方案:

a = [7200,7050,7300,7500,7440,7200,7300,7280,7400]
b = [max(a[0:i]) if i > 0 else a[i] for i in range(len(a))]

最新更新