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