- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发现了大量讨论数组中字符串的查找/替换方法的帖子,但是它们似乎都依赖于“静态字符串”输入来进行替换
即:
var str = "Mr Blue has a blue house and a blue car";
var res = str.replace(/blue/g, "red");
我需要查找并替换对输入事件的检查
var whichKey = (String.fromCharCode(event.keyCode));
还可以动态查找并替换不同字符串中匹配的字符。
需要明确的是:
我正在制作“刽子手”游戏
用户按“W”(例如)作为“猜测”:
secretPuzzleSolution = ['s', 'o', 'l', 'u', 't', 'i', 'o', 'n']
puzzleUserSees = ['_', '_', '_', '_', '_', '_', '_', '_']
W 不在拼图中,因此他们将失去“尝试”机会如果他们按“S”,代码将检查 SecretPuzzleSolution[] 中的“s”,并将 puzzleUserSees[] 中的所有“_”替换为正确位置的“s”,并返回新的 puzzleUserSees = ['S', ' _ ' ,'_','_','_','_','_','_',]结果。
代码成功找到了secretPuzzleSolution[]中的按键,但到目前为止我还无法找到它
复制 SecretPuzzleSolution[] 中的位置,以便在正确的位置更改 puzzleUserSees[] 元素
替换按键的所有实例,而不仅仅是第一个(如果 SecretPuzzleSolution[] 中有两个 's' 元素,请在 puzzleUserSees[] 中的正确位置更改这两个元素
到目前为止,我所得到的,它确实完成了部分工作,但正如你所看到的,它在很多方面都明显被破坏了。有什么想法吗?
这是我正在处理的部分:
document.onkeydown = function(e) {
var whichKey = (String.fromCharCode(event.keyCode));
var keyPress = whichKey.toLocaleLowerCase();
var found = secretPuzzleSolution.find(function(element) {
var isMatch = secretPuzzleSolution.indexOf(element);
if (typeof(element) !== 'undefined') {
puzzleUserSees.splice((isMatch), (isMatch), element);
remainingMystery--;
} else {
guessList.push(keyPress);
triesLeft--;
}
return element === keyPress;
});
if (remainingMystery <= 0) {
document.getElementById('game-display-area').innerHTML = ('YOU WIN!')
};
console.log('These guesses were correct: ' + found);
};
我要补充的最后一件事是,我在学校,所以我确信有一种奇特的方法可以做到这一点或使用 jQuery,但应该有一种仅使用 JS 的简单方法,因为这就是我应该做的到目前为止知道:)
我尝试过的其他东西:
var test_array = (secretPuzzleSolution.indexOf(keyPress) > -1);
if (test_array === true) {
console.log(keyPress + ' was found in the puzzle');
for (i = 0; i < puzzleUserSees.length; i++) {
if (keyPress === puzzleUserSees[i]) {
puzzleUserSees.splice([i], keyPress)
}
}
} else {
triesLeft--;
guessList.push(keyPress);
console.log(keyPress + ' was NOT found');
}
谢谢!
最佳答案
您犯了一个典型的错误,循环遍历数组来搜索某些内容,并将其视为每个不匹配元素的失败。请参阅Searching array reports "not found" even though it's found
您不应该使用.find()
,因为它只返回第一个匹配的位置。您需要使用 .each() 来循环整个数组。它接收元素的数组索引,因此您不需要使用仅返回第一个位置的 .indexOf()
,并且当一个字母可能有多个匹配项时没有用处。
document.onkeydown = function(e) {
var whichKey = (String.fromCharCode(event.keyCode));
var keyPress = whichKey.toLocaleLowerCase();
var found = false;
secretPuzzleSolution.forEach(function(element, index) {
if (element == keyPress) {
found = true;
puzzleUserSees = keyPress;
remainingMystery--;
}
});
if (!found) {
triesLeft--;
}
if (remainingMystery <= 0) {
document.getElementById('game-display-area').innerHTML = ('YOU WIN!')
};
};
关于javascript - Javascript 中字符串匹配+替换的特例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52745960/
数组的倒置计数表示——数组离排序有多远(或接近)。如果数组已经排序,则反转计数为 0。如果数组以相反的顺序排序,则反转计数为最大值。形式上来说,如果 a[i] > a[j] 且 i < j,则两个元素
假设我有两座建筑物,我可以在其中 build 不同的单元。一个建筑物只能同时 build 一个单元,但有一个最多 5 个单元的 fifo 队列,它们将按顺序 build 。每个单元都有构建时间。我需要
我正在执行一个查询并从数组中的数据库中获取以下数据(MySql2 类型对象): +-----------+---------------+---------------+------+------+
在 ghci 中: λ> :t (pure 1) (pure 1) :: (Applicative f, Num a) => f a λ> show (pure 1) :1:1: No ins
在这种特殊情况下,我不会让 file_get_contents() 返回页面,其中 url 包含一个“Ö”字符。 $url = "https://se.timeedit.net/web/liu/db1
这是我的字符串10000000000000000000000000000000000000000000000000000000000 与 60 1/0 组合的字符串。 我想把它放入一个 int Arr
你好, 我有以下代码: 43 while (TRUE) 44 { 45 printf("Swipe Card: "); 46 scanf("%s
我正在寻找在多项式时间内解决的 3-SAT 特例及其算法。任何链接? 谢谢。 最佳答案 阅读 Thomas J Schaeffer 的优秀(但有点难以阅读)论文:The Complexity of S
我正在清理我的一个旧项目。它必须做的一件事是——给定笛卡尔网格系统和网格上的两个正方形,找到所有正方形的列表,连接这两个正方形中心的线将通过这些正方形。 这里的特殊情况是所有起点和终点都被限制在正方形
如果你在“alloc.c”中有如下代码: typedef __typeof__(sizeof(int)) size_t; extern void *calloc (size_t __nmemb, si
我在 Ruby 中有一个数组,其值如下 xs = %w(2.0.0.1 2.0.0.6 2.0.1.10 2.0.1.5 2.0.0.8) 等等。我想对数组进行排序,使最终结果应该是这样的: ys =
关于将应用程序提交到 iOS AppStore,我遇到了一个非常独特的困境。 这是一款适用于 1.5 至 3 岁 child 的应用程序,该应用程序背后的想法是通过语音引导您学习动物名称和它们的声音。
我是一名优秀的程序员,十分优秀!