【问题标题】:How can I find the duplicated elements in a array and replace them? [duplicate]如何在数组中找到重复的元素并替换它们? [复制]
【发布时间】:2018-02-01 19:19:49
【问题描述】:

这是我第一次访问该网站。我的刽子手有一个大问题。

我有一个词库:

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

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

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

我有一个数组,它被推送的占位符数量与我随机选择的单词的长度相同。如果我按下按钮对象 [I have many from 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 - ”

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

【问题讨论】:

标签: javascript arrays


【解决方案1】:

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

for(var i = 0; i < randomChosenWord.length; i++) {
  if(randomChosenWord[i] === this.letter){
    lettersChosen.splice(i, 1, this.letter);
  }
}

这将替换该行

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

【讨论】:

    【解决方案2】:

    做这件事的捷径:

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

    将所选择的字母拆分成一个单独的字母数组,使用array.map遍历它们并替换所有匹配的字母,然后再次加入一个字符串。

    【讨论】:

    • 你的回答比我的酷多了。 +1
    • 耶!酷的加分(但很慢,因为响应速度很慢......当我想到它时可能是代码方面的,我猜这对刽子手来说应该不是问题)! :D
    【解决方案3】:

    您可以将此行:if (randomChosenWord.includes(this.letter)) { 更改为 while 循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多