首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript是否支持像Python这样的数组/列表理解?

JavaScript是否支持像Python这样的数组/列表理解?
EN

Stack Overflow用户
提问于 2015-07-11 11:49:30
回答 7查看 65K关注 0票数 79

我正在练习/学习JavaScript和Python。我想知道Javascript是否等同于这种类型的编码。

出于练习的目的,我基本上是尝试从字符串中的每个单独的整数中获取一个数组。我对Python比JavaScript更精通

Python:

代码语言:javascript
复制
string = '1234-5'

forbidden = '-'

print([int(i) for i in str(string) if i not in forbidden])

Javascript有没有类似的东西可供我在上面做?

EN

回答 7

Stack Overflow用户

发布于 2015-07-11 11:58:42

阅读代码时,我假设禁止可以有1个以上的字符。我还假设输出应该是"12345“

代码语言:javascript
复制
var string = "12=34-5";

var forbidden = "=-";

console.log(string.split("").filter(function(str){
    return forbidden.indexOf(str) < 0;
}).join(""))

如果输出为“%1”“%2”“%3”“%4”“%5

代码语言:javascript
复制
var string = "12=34-5";

var forbidden = "=-";

string.split("").forEach(function(str){
    if (forbidden.indexOf(str) < 0) {
        console.log(str);
    }
});
票数 9
EN

Stack Overflow用户

发布于 2015-07-11 11:54:02

不是直接的,但是复制起来并不难。

代码语言:javascript
复制
var string = "1234-5";

var forbidden = "-";

string.split("").filter(function(str){
    if(forbidden.indexOf(str) < 0) {
        return str;
    }
}).forEach(function(letter) { console.log(letter);});

我猜更直接的是:

代码语言:javascript
复制
for(var i=0 ; i < str.length ; i++) {
    if(forbidden.indexOf(str) < 0) {
        console.log(str[i]);
    }
}

但是没有内置的方法来过滤你的for循环。

票数 5
EN

Stack Overflow用户

发布于 2017-05-15 05:19:01

您可以使用应用程序函数器轻松实现此行为。

代码语言:javascript
复制
Array.prototype.ap = function(xs) {
  return this.reduce((acc, f) => acc.concat(xs.map(f)), []) 
}


const result = [x => x +1].ap([2])
console.log(result)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31353213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档