使用sum、map和lambda将Python转换为JavaScript
我不熟悉Python,我正在尝试将函数转换为JavaScript,但我不太明白这行代码的作用:使用sum、map和lambda将Python转换为JavaScript,javascript,python,Javascript,Python,我不熟悉Python,我正在尝试将函数转换为JavaScript,但我不太明白这行代码的作用: maxnum = sum(map(lambda x: x[1], tsweights)) 其中tsweights=[[5',61],[6',61],[7',61],…] 我不知道这是怎么回事,如果有人能帮上忙就好了 完整功能:让我们从一些提示开始 lambda x:x[1]只是一个匿名函数,其作用与此相同: function foo(x) { return x[1]; } map()相当于
maxnum = sum(map(lambda x: x[1], tsweights))
其中tsweights
=[[5',61],[6',61],[7',61],…]
我不知道这是怎么回事,如果有人能帮上忙就好了
完整功能:让我们从一些提示开始
lambda x:x[1]
只是一个匿名函数,其作用与此相同:
function foo(x) {
return x[1];
}
map()
相当于。我想你可以弄清楚sum()
的作用
相关Python文档:
sum = 0
for item in tsweights:
sum += item[1]
如果
tsweights
=[[5',61],[6',61],[7',61],…]
,那么函数将返回61+61+…
,这与JavaScript中的类似
var tsweights = [['5', 61], ['6', 61], ['7', 61], ... ];
var maxnum = 0;
for (var i in tsweights)
{
maxnum += tsweights[i][1];
}
只是为了补充马特·鲍尔的答案:
var tsweights = [['5', 61], ['6', 61], ['7', 61], ... ]
, maxnum = tsweights.map(function(x){ return x[1] })
.reduce(function( p, c ){ return p+c })
因为JavaScript没有sum函数
或使用es中的新箭头功能:
var tsweights = [['5', 61], ['6', 61], ['7', 61], ... ]
, maxnum = tsweights.map( x => x[1] ).reduce ( (p,c) => p+c )
谢谢,我想出来了:)很有用,但是在javascript中你需要做
tsweights[tsweight][1]
。在此示例中,vartsweight
是键,而不是值。它确实帮助了我,还有一个。@MakuraYami哎呀。我的错。更新的答案。我明白了,这比我认为的更简单,更像原始的Python,IMO,使用@MattBall是的,你说得对!我只是想知道投票失败的原因。