Python列表parsingnodejs / javascript

有没有什么类似的python列表理解nodejs / JavaScript? 如果没有,那么是否有可能做出具有类似行为的function

# Example 1 list_one = [[1, 2], [3, 4], [5, 6], [7, 8]] someOfList = sum(x[1] for x in list_one) print(someOfList) # prints 20 # Example 2 combined = "".join([str( ( int(x) + int(y) ) % 10) for x, y in zip("9999", "3333")]) print(combined) # prints 2222 

等等? 或者你是否必须为每个理解做出function,比​​如行为? 我知道你可以为每个人做function,但是如果你使用了很多列表推导,代码就会变长

列表理解放入语言的语法中,通常会用mapfilter来完成。

所以给定一个Python列表理解,你也可以使用map和filter:

 # Python - preferred way squares_of_odds = [x * x for x in a if x % 2 == 1] # Python - alternate way map(lambda x: x * x, filter(lambda x: x % 2 == 1, a)) 

虽然在Python中理解是首选。 JavaScript有mapfilter所以你可以使用这些。

 // JavaScript a.map(function(x){return x*x}).filter(function(x){return x%2 == 1}) 

即将推出的JavaScript版本将在语言中进行数组理解 :

 [ x*x for (x of a) if (x % 2 === 1) ] 

要查看即将发布的版本中现在可用的内容,请参阅此兼容性表 。 在撰写本文时,您可以看到它们在Firefox中可用。

这就是为什么咖啡脚本是发明的,你可以通过在这里复制和粘贴你的代码来尝试(去“试用cofeescript”标签)

这就是它给我的:

 var combined, list_one, someOfList, x, y; list_one = [[1, 2], [3, 4], [5, 6], [7, 8]]; someOfList = sum((function() { var _i, _len, _results; _results = []; for (_i = 0, _len = list_one.length; _i < _len; _i++) { x = list_one[_i]; _results.push(x[1]); } return _results; })()); print(someOfList); combined = "".join([ (function() { var _i, _len, _ref, _results; _ref = zip("9999", "3333"); _results = []; for (y = _i = 0, _len = _ref.length; _i < _len; y = ++_i) { x = _ref[y]; _results.push(str((int(x) + int(y)) % 10)); } return _results; })() ]);