首页 > 解决方案 > 将数组与字符串进行比较,并将在数组中找到的所有项目替换为字符串中的公共字符

问题描述

我有一个文本字符串,其中一些字符之间有 100 个不同的“键”,还有« »一个包含UsedKeys. 我正在尝试将字符串str与数组进行比较,并将数组中找到的所有键替换UsedKey为复选标记字符。我对循环和一般的 javascript 仍然很陌生,而且我似乎无法让脚本替换除数组中的最后一个键之外的任何键。在这种情况下,将是«SPLXVIII»

我还有第二个数组AllKeys,我想使用它来隐藏所有未使用的键。我确定我必须找到两个数组(UsedKeysAllKeys)之间的区别,我只是不太确定如何。

问题:

1)如何替换 UsedKey 数组中的所有键?

2)如何隐藏字符串中不在 UsedKey 数组中的所有其他键?

function replace() {
var str = ("«SPII» Club T-Bird Pass<br>«SPIV» Free Otter Pop<br>«SPVI» Club T-Bird Pass<br>«SPVIII» Free Water<br>«SPX» Club T-Bird Pass<br>«SPXII» Free Squishy<br>«SPXIV» Free Fast Pass Token (Redeem at thundershack)<br>«SPXVI» Free Hot Cheetos<br>«SPXVIII» Free Fast Pass Token (Redeem at thundershack)<br>«SPXX» Club T-Bird Pass<br>«SPXXII» Free Otter Pop<br>«SPXXIV» Free Grab Bag Item (it could be anything)<br>«SPXXVI» Thundershack Gift Card<br>«SPXXVIII» Free Sour Punch Stick<br>«SPXXX» Club T-Bird Pass<br>«SPXXXII» 50% Off Thundershack 1 item<br>«SPXXXIV» Free Grab Bag Item (it could be anything)<br>«SPXXXVI» Thunder Cash<br>«SPXXXVIII» Club T-Bird Pass<br>«SPXL» WIS Lanyard and Id Pouch<br>«SPXLII» Free Fast Pass Token (Redeem at thundershack)<br>«SPXLIV» Free Soda<br>«SPXLVI» Free Sour Punch Stick<br>«SPXLVIII» Free Grab Bag Item (it could be anything)<br>«SPL» Club T-Bird Pass<br>«SPLII» 50% Off Thundershack 1 item<br>«SPLIV» Me N Eds Pizza<br>«SPLVI» Thundershack Gift Card<br>«SPLVIII» Free Sour Punch Stick<br>«SPLX» Free Soda<br>«SPLXII» Club T-Bird Pass<br>«SPLXIV» Free Otter Pop<br>«SPLXVI» Free Water<br>«SPLXVIII» Club T-Bird Pass<br>«SPLXX» 50% Off Thundershack 1 item<br>«SPLXXII» Free Otter Pop<br>«SPLXXIV» Club T-Bird Pass<br>«SPLXXVI» Club T-Bird Season Pass<br>«SPLXXVIII» Free Otter Pop<br>«SPLXXX» Free Sour Punch Stick<br>«SPLXXXII» 50% Off Thundershack 1 item<br>«SPLXXXIV» Free Fast Pass Token (Redeem at thundershack)<br>«SPLXXXVI» Free Sour Punch Stick<br>«SPLXXXVIII» Free Water<br>«SPXC» Free 6 Flags Magic Mountain Entrance Ticket<br>«SPXCII» Free Otter Pop<br>«SPXCIV» Club T-Bird Pass<br>«SPXCVI» 50% Off Thundershack 1 item<br>«SPXCVIII» Free Water<br>«SPC» Thundershack Spending Spree");

var AllKeys = ["«SPI»","«SPII»","«SPIII»","«SPIV»","«SPV»","«SPVI»","«SPVII»","«SPVIII»","«SPIX»","«SPX»","«SPXI»","«SPXII»","«SPXIII»","«SPXIV»","«SPXV»","«SPXVI»","«SPXVII»","«SPXVIII»","«SPXIX»","«SPXX»","«SPXXI»","«SPXXII»","«SPXXIII»","«SPXXIV»","«SPXXV»","«SPXXVI»","«SPXXVII»","«SPXXVIII»","«SPXXIX»","«SPXXX»","«SPXXXI»","«SPXXXII»","«SPXXXIII»","«SPXXXIV»","«SPXXXV»","«SPXXXVI»","«SPXXXVII»","«SPXXXVIII»","«SPXXXIX»","«SPXL»","«SPXLI»","«SPXLII»","«SPXLIII»","«SPXLIV»","«SPXLV»","«SPXLVI»","«SPXLVII»","«SPXLVIII»","«SPXLIX»","«SPL»","«SPLI»","«SPLII»","«SPLIII»","«SPLIV»","«SPLV»","«SPLVI»","«SPLVII»","«SPLVIII»","«SPLIX»","«SPLX»","«SPLXI»","«SPLXII»","«SPLXIII»","«SPLXIV»","«SPLXV»","«SPLXVI»","«SPLXVII»","«SPLXVIII»","«SPLXIX»","«SPLXX»","«SPLXXI»","«SPLXXII»","«SPLXXIII»","«SPLXXIV»","«SPLXXV»","«SPLXXVI»","«SPLXXVII»","«SPLXXVIII»","«SPLXXIX»","«SPLXXX»","«SPLXXXI»","«SPLXXXII»","«SPLXXXIII»","«SPLXXXIV»","«SPLXXXV»","«SPLXXXVI»","«SPLXXXVII»","«SPLXXXVIII»","«SPLXXXIX»","«SPXC»","«SPXCI»","«SPXCII»","«SPXCIII»","«SPXCIV»","«SPXCV»","«SPXCVI»","«SPXCVII»","«SPXCVIII»","«SPXCIX»","«SPC»"];

var UsedKeys =["«SPII»","«SPXCIV»","«SPLXVIII»"];
for (var i = 0; i < UsedKeys.length; i++) { 
var a = str.replace(UsedKeys[i],"✔️");
}
document.getElementById("index").innerHTML = a; }

非常感谢!

标签: javascriptarraysstringreplace

解决方案


您应该使用正则表达式。

for (var i = 0; i < UsedKeys.length; i++) { 
    var regex = new RegExp(UsedKeys[i], 'g')
    var a = str.replace(regex, "✔️");
}

“g”表示全局。所以,替换所有的出现。


推荐阅读