使用sum、map和lambda将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()相当于

我不熟悉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()
相当于。我想你可以弄清楚
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]
。在此示例中,var
tsweight
是键,而不是值。它确实帮助了我,还有一个。@MakuraYami哎呀。我的错。更新的答案。我明白了,这比我认为的更简单,更像原始的Python,IMO,使用@MattBall是的,你说得对!我只是想知道投票失败的原因。