Vanilla JS - .replace() 与数组和循环

Vanilla JS - .replace() with array and loop

我自己写了一个小脚本,可以将英文单词转换为精灵语单词。

var clickMe = document.querySelector('#button-7993f34d');

clickMe.addEventListener('click', function (event) {
  setTimeout(function() {
    var checkSelect = document.querySelector("select");
    // Lang
    checkSelect.innerHTML = checkSelect.innerHTML.replace('Tree', 'Adahl');
    checkSelect.innerHTML = checkSelect.innerHTML.replace('Forest', 'Adahlen');
    checkSelect.innerHTML = checkSelect.innerHTML.replace('Arrow', 'Assan');
  }, 0);
});
<select>
  <option>Tree</option>
  <option>Forest</option>
  <option>Arrow</option>
</select>
<button id="button-7993f34d">click me</button>

一切正常。但是,我想以数组的形式呈现单词。例如:

langs = [
  {"eng": "Tree", "elf": "Adahl"},
  {"eng": "Forest", "elf": "Adahlen"},
  {"eng": "Arrow", "elf": "Assan"}
]

不再赘述:

 checkSelect.innerHTML = checkSelect.innerHTML.replace('Tree', 'Adahl');

这个线程最接近我的解决方案: 但是,我无法将其适应我的脚本。

我的情况可以吗?我试图用替换功能找到类似的解决方案。不幸的是,无济于事。你能给些建议吗?

不过,我还在努力,如果我在回答之前找到了解决方案,我一定会分享。

这是一个非常基本的功能,可以用精灵术语替换出现的英语术语。

function replaceText(text) {
  const langs = [
    {"eng": "Tree", "elf": "Adahl"},
    {"eng": "Forest", "elf": "Adahlen"},
    {"eng": "Arrow", "elf": "Assan"}
  ];
  let textToReturn = text;
  langs.forEach((word) => {
    textToReturn = textToReturn.replaceAll(word.eng, word.elf);
  });
  return textToReturn;
};

console.log(replaceText("My Tree is in the Forest")); 

您也可以使用 switch 语句执行此操作。

switch(wordInEnglish) {

    case "Tree": return "Adahl";
    
    case "Forrest": return "Adahlen";

    case "Arrow": return "Assan";

}