【问题标题】:Purpose of -1 in String.fromCharCode(k)String.fromCharCode(k) 中 -1 的用途
【发布时间】:2023-03-09 21:33:01
【问题描述】:

我有以下 sn-p 代码:

return (AllowableCharacters.indexOf(String.fromCharCode(k)) != -1);

现在,我不太明白这个脚本中 -1 的用法。

脚本读取方式如下:

first String.fromCharCode(k) != -1 被执行(k 是关键代码,我是从其他脚本动态获取的)。

然后我从 AllowableCharacters 获得 indexof(String.fromCharCode(k) != -1)。

这是一个类似这样的字符串:

AllowableCharacters = "abc" ; 

我也明白,如果 indexof 在上面的字符串中找不到值,它会返回 -1。

但是,回到我的问题,为什么 -1 在脚本中?

编辑 ::

为了让我的问题更简单,您将如何阅读以下行:

String.fromCharCode(k))!=-1

简单明了的英语。

编辑 2::

好的,所以我只是阅读了 guffa 的答案并制作了一个随机脚本来检查,这是脚本:

 var store = "abcdefgpS";

        function check_index(){
            console.log(store.indexOf(String.fromCharCode(83))); 
        };

在上面的函数中, !-1 被排除在外,所以在 console.log 中,如果找到匹配项,我们将获得找到该字符的 indexOf ,如果未找到匹配项,我们将获得 -1 。

现在, 现在这不是我们想要的,我们想要的是“告诉我值是否存在”(返回 true)或“告诉我值是否不存在”(返回错误的)。

所以我们要做的就是把上面的脚本改成:

 var store = "abcdefgpS";

        function check_index(){
            console.log(store.indexOf(String.fromCharCode(83)) !-1); 
        };

其中,给你真值或假值。

现在怎么样:

return (store.indexOf(String.fromCharCode(83)) !-1)

读作:

if (store.indexOf(String.fromCharCode(83)) !-1){
      return true;
}else { return false; } 

我在 . return (store.indexOf(String.fromCharCode(83)) !-1);

谢谢,

亚历山大

【问题讨论】:

  • 简单的答案是无法检查真实性,因为0 是一个有效索引但不是真实性的。因此索引方法使用-1表示它不存在
  • @charlietfl 查看我的 edit2 。谢谢。

标签: javascript fromcharcode


【解决方案1】:

这是一个验证字符是否被允许的条件。它将返回一个boolean(比较的结果)。

让我们分解一下。

  1. 首先,我们从带有String.fromCharCode 的字符代码中得到一个字符串。大概我们是从某种输入事件中收到的。
  2. 接下来,我们使用indexOf 获取AllowableCharacters 中生成的单字符串的索引。
  3. 最后,我们测试结果是否为-1。测试评估为boolean 值,它可以像任何其他值一样从函数返回。 -1 的值表示该字符是不允许的,所以我们使用!= 来判断该字符是否有效。

【讨论】:

  • 是某种 if 语句吗??
  • 你能再详细一点吗,我已经为此苦苦挣扎了将近一天。谢谢。
  • 就是这样,但你能看看我的 Edit2 并尝试回答这个问题吗,这几乎是我的最后一个问题。
【解决方案2】:

你弄错了执行顺序。

首先评估此表达式:String.fromCharCode(k)

假设结果是字符串"b"。这在表达式中使用:AllowableCharacters.indexOf("b")

假设字符位于字符串中的第二个字符处,该字符的索引为 1,因此结果为1。这在表达式1 != -1 中使用。

由于1不等于-1,所以返回结果为true

简而言之,将-1indexOf 方法的结果进行比较,因为这些方法在没有找到任何内容时会返回-1


比较运算符!= 导致值为truefalse。它比较值,结果取决于它们是否相等。无需if 语句即可将结果转换为truefalse,这已经是比较表达式的值了。

有时你会看到如下代码:

if (AllowableCharacters.indexOf(String.fromCharCode(k)) != -1) {
  return true;
} else {
  return false;
}

if 声明在这种情况下是多余的。 if语句中的表达式已经是truefalse,所以可以直接返回:

return AllowableCharacters.indexOf(String.fromCharCode(k)) != -1;

【讨论】:

  • +1 为你的答案,但你能检查我的编辑2 请也尝试编辑你对我的那个问题的答案,因为那部分让我感到困惑。
  • @AlexanderSolonik:我添加了一些进一步的解释,希望它能澄清一些事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2022-11-13
  • 1970-01-01
  • 2010-11-04
相关资源
最近更新 更多