gpt4 book ai didi

javascript - 从数组中查找事件索引(逻辑)

转载 作者:行者123 更新时间:2023-12-03 08:46:06 29 4
gpt4 key购买 nike

我在这个问题上遇到了困难。我正在使用 JavaScript。

我有一个文本区域,用于检测 @ 输入并将其位置存储在数组中。

var input = "@a @b @c" //textarea
var indexes = [1, 4, 7];

现在,在每个新的输入上,我想通过查看caretPos来找出事件索引

indexes.forEach(function(value, i){
if (input.substr(value - 1, 1) !== '@') {
indexes.splice(i, 1);
}
if (caretPos == value || caretPos > value) {
activeIndex = value;
}
}

我知道我错过了一张支票,但我不知道如何实现。只要您使用 caretPos 向后移动,此代码就会起作用,但一旦向前移动,它就会停止工作。

编辑:以防不清楚。如果 caretPos5,则 activeIndex 将为 4

最佳答案

看起来您正在尝试查找 caretPos 左侧第一个 @ 符号的索引。
当前设置不起作用的原因是您在循环索引数组时更改了索引数组。 index.splice() 更改索引。当你循环数组时,这是危险的/不是好的做法。

而且你并不真的需要索引数组来实现你想要的。

如果你这样做:

activeIndex = input.slice(0,caretpos).lastIndexOf('@') +1;

您应该得到正确的结果。

  • slice() 将 caretpos 中的所有内容从输入字符串中剪切出来(不更改原始输入字符串)
  • lastIndexOf() 查找最后一次出现的 @ 符号(并加 1,因为这就是您要查找的内容)。

希望这有帮助!

关于javascript - 从数组中查找事件索引(逻辑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32881692/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com