首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含javascript中的枚举等效项的列表理解

包含javascript中的枚举等效项的列表理解
EN

Stack Overflow用户
提问于 2021-11-09 15:21:39
回答 3查看 31关注 0票数 0

请问这段python代码的javascript中的等价物是什么?

代码语言:javascript
复制
guessed_index = [
        i for i, letter in enumerate(self.chosen_word)
        if letter == self.guess
    ]

枚举和列表理解在ES6等效项中都不存在,如何将这两个概念合并为一个

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-11-09 15:26:37

专注于问题的可迭代/enumerate部分,而不是正在执行的特定任务:您可以使用generator function实现Python's enumerate的JavaScript模拟,并通过for-of (如果愿意,也可以手动)使用生成的生成器(这是可迭代的超集):

代码语言:javascript
复制
function* enumerate(it, start = 0) {
    let index = start;
    for (const value of it) {
        yield [value, index++];
    }
}

const word = "hello";
const guess = "l";
const guessed_indexes = [];
for (const [value, index] of enumerate(word)) {
    if (value === guess) {
        guessed_indexes.push(index);
    }
}
console.log(`guessed_indexes for '${guess}' in '${word}':`, guessed_indexes);

或者,您可以编写一个特定的生成器函数来执行查找匹配的任务:

代码语言:javascript
复制
function* matchingIndexes(word, guess) {
    let index = 0;
    for (const letter of word) {
        if (letter === guess) {
            yield index;
        }
        ++index;
    }
}

const word = "hello";
const guess = "l";
const guessed_indexes = [...matchingIndexes(word, guess)];

console.log(`guessed_indexes for '${guess}' in '${word}':`, guessed_indexes);

票数 0
EN

Stack Overflow用户

发布于 2021-11-09 15:25:16

也许findIndex是有用的?

代码语言:javascript
复制
const word = "Hello";
const guess = "o";
const guessed_index = [...word].findIndex(letter => letter === guess);
console.log(guessed_index)

票数 0
EN

Stack Overflow用户

发布于 2021-11-09 15:26:44

对于不精通python的潜在读者来说,为了清楚起见,下面是与您的理解相当的python循环:

代码语言:javascript
复制
guessed_index = []
i = 0
for letter in self.chosen_word:
    if letter == self.guess:
        guessed_index.append(i)
    i += 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69900694

复制
相关文章

相似问题

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