【问题标题】:Slice in JavaScriptJavaScript 中的切片
【发布时间】:2017-02-26 17:34:18
【问题描述】:

我开始了一段 JavaScript 之旅,并拥有以下我真正需要详细了解的代码。尤其是上面写着if (str.slice(i, i + 2) === " ")的那一行

    var str = prompt("Enter some text");
var numChars = str.length;
for (var i = 0; i < numChars; i++) {
    if (str.slice(i, i + 2) === " ") {
        alert("No double spaces!");
        break;
    }
}

【问题讨论】:

标签: javascript slice


【解决方案1】:

您正在与单个空格进行比较。

if (str.slice(i, i + 2) === " ") {
//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
//                          ^^^ single space 

比较只是true 在一种情况下,在字符串的末尾有一个空格。所有其他比较的结果都是 false,因为长度为 2 的字符串永远不会等于具有单个字符的字符串。

【讨论】:

  • 感谢您的帮助。
【解决方案2】:

也就是说,对于输入文本中的每个字母i,到字母i + 2,如果它们等于" ",那么它们是两个空格。

换句话说,它正在检查文本中的两个字母组合中的每一个,看它们是否匹配两个空格

例如:

"En", "nt", "te", "er", "r ", " s", "so", "om" 等等...

所以,切片是在参数指定的范围内“切片”字母:str.slice(beginIndex[, endIndex])

编辑:没有看到 prompt() 调用,因此相应更新。

也许试试这个以便更好地了解正在发生的事情:

var str = prompt("Enter some text");
var numChars = str.length;
for (var i = 0; i < numChars; i++) {
    if (str.slice(i, i + 2) === " ") {
        alert("No double spaces!");
        break;
    } else {
        document.write(str.slice(i, i + 2) + "<br>")
    }
}

【讨论】:

  • 感谢您的帮助。
【解决方案3】:

str.slice(i, i + 2)for 循环内将解析字符串str 一次取两个连续字符,索引为ii+1,其中i 将具有从0 到@987654329 的所有值@ 的 str 根据 for 循环。

注意:在if(str.slice(i, i + 2) === " ") 的代码 sn-p 中,您将两个字符与单个字符(即空格)进行比较。所以它永远不可能是真的。

看一个更好的例子可以更清楚地理解。

var str1 = "Single space";
var str2 = "Double  space";

var numChars1 = str1.length;
var numChars2 = str2.length;

// Check is str1 has double spaces
for (var i = 0; i < numChars1; i++) {
  if (str1.slice(i, i + 2) === "  ") {
    console.log("Double spaces found in str1");
    break;
  }
}

// Check is str2 has double spaces
for (var i = 0; i < numChars1; i++) {
  if (str2.slice(i, i + 2) === "  ") {
    console.log("Double spaces found in str2");
    break;
  }
}

w3schools上了解并找到更多关于切片的示例

【讨论】:

  • 感谢您的大力帮助 :)
猜你喜欢
  • 2015-09-14
  • 2017-12-09
  • 2021-07-30
  • 1970-01-01
  • 2015-09-02
  • 1970-01-01
  • 2020-08-07
  • 2015-08-25
  • 1970-01-01
相关资源
最近更新 更多