Python列表理解nodejs/javascript

Python列表理解nodejs/javascript,javascript,python,node.js,Javascript,Python,Node.js,nodejs/javascript是否有类似于pythons列表理解的内容?如果没有,那么是否可以创建一个具有类似行为的函数,例如 # 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)

nodejs/javascript是否有类似于pythons列表理解的内容?如果没有,那么是否可以创建一个具有类似行为的函数,例如

# 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
等等?或者你需要为每一个理解类行为创建函数吗?
我知道你可以为其中的每一个创建函数,但是如果你使用大量的列表理解,代码可能会变得很长

这就是为什么发明了coffee脚本,你可以通过复制和粘贴代码来尝试(转到“try CoffeeScript”选项卡)

这就是它给我的:

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;
  })()
]);
var组合,列表一,列表中的一些,x,y;
列表一=[[1,2]、[3,4]、[5,6]、[7,8];
someOfList=sum((函数(){
变量i,len,结果;
_结果=[];
对于(_i=0,_len=list_one.length;_i<_len;_i++){
x=列表一[_i];
_结果:push(x[1]);
}
返回结果;
})());
打印(部分列表);
联合=“加入”([
(功能(){
变量i,len,ref,结果;
_ref=zip(“9999”、“3333”);
_结果=[];
对于(y=_i=0,_len=_ref.length;_i<_len;y=++_i){
x=_ref[y];
_结果:push(str((int(x)+int(y))%10);
}
返回结果;
})()
]);

列出将理解放在语言语法中通常使用
map
filter
执行的操作

因此,在理解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有
map
filter
,因此您现在可以使用它们

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


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

这个问题是几个月前提出的,但随着事态的发展,我想这个问题不会重复。您能在NodeJS中测试这个数组理解吗?我在Node中尝试过,但是
var myArray=[“一”,2,3.0,[4,5,“六”];[x代表(myArray的x)]
SyntaxError:的意外标记。我无法在Chrome控制台上运行它。哦,很抱歉,这是一个4-1/2年前的答案,在我写它的时候,它看起来像是JS将获得数组理解,但那没有发生。它目前是一个非标准功能:在Node中不受支持,在其他任何地方也不受支持!事情似乎是流动的。:)
[ x*x for (x of a) if (x % 2 === 1) ]