如何在数组中找到重复的元素并替换它们?

时间:2018-02-01 19:19:50

标签: javascript arrays

这是我第一次访问该网站。我的刽子手问题很严重。

我有一个wordBank:

       wordBank = ["pizza", "pie", "cookie", "candy", "salad", "chicken", "pork", "burger", "fries"]

我有一个变量,它从wordBank中选择一个随机单词并将其变成一个数组:

randomChosenWord = wordBank[round(random(wordBank.length - 1))].split('')

我有一个数组,其推送的占位符与我随机选择的单词的长度相同。如果我按下我的按钮对象[我有很多来自A-Z],它将替换与随机选择的单词中的字母相同的索引中的占位符与按钮上的字母:

 this.click = function() {
            if (mouseX > this.x - 10 && mouseX < this.x + 10 && mouseY > this.y - 10 && mouseY < this.y + 10) {
                if (randomChosenWord.includes(this.letter)) {               
                lettersChosen.splice(randomChosenWord.indexOf(this.letter), 1, this.letter)
                }

一个例子: Pizza是随机选择的单词

跟踪我选择的字母的数组显示为“ - - - - - ”(与披萨相同的长度)

如果我按下z的按钮,它将替换索引,该索引与随机选择的单词中第一个z的索引相同。这将显示“ - - z - - ”

这很好用,但我希望它能替换索引中包含z的所有占位符,因此它可以显示为“ - - z z - ”

如何在数组中找到重复的元素并替换它们?

3 个答案:

答案 0 :(得分:1)

您可以遍历随机单词的长度,检查每个字母以查看它是否是所选字母。如果是,请替换该索引处的字符。

lettersChosen.splice(randomChosenWord.indexOf(this.letter), 1, this.letter)

这将取代

@SpringBootApplication
public class Application implements CommandLineRunner {

    @Autowired
    private Config config;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String ... strings) throws Exception {
        System.out.printf("Application is running in %s environment, service parameters below:\n",
                getEnvProperty("spring.profiles.active").toUpperCase());
        printServiceParameters();
        switchEnvironment();
        printServiceParameters();
    }

    private String getEnvProperty(String propertyName) {
        return config.getEnv().getProperty(propertyName);
    }

    private void printServiceParameters() {
        System.out.println(getEnvProperty("service.endpoint"));
    }

    private void switchEnvironment() {
        //todo Switch active profile
    }

}

答案 1 :(得分:1)

这样做的简短方法:

lettersChosen.split('').map(function (letter, i) {
    return randomChosenWord[i] === this.letter ? this.letter : letter;
}).join('')

将lettersChosen拆分成一个单独的字母数组,使用array.map迭代它们并替换所有匹配的字母,然后再次连接成一个字符串。

答案 2 :(得分:0)

您可以将此行:contacts更改为while循环。