为什么用循环日志字母代替数字?

时间:2019-03-23 04:30:19

标签: javascript

将var设置为整数,据我所知i++的意思是递增1。我不明白为什么它会打印变量sentence的所有字符,而不是所有变量将与长度相对应。

var sentence = "I love learning software development";

for (var i=0; i < sentence.length; i++) {
	if (sentence[i] !== " ") {
		console.log(sentence[i]);
	}
}

4 个答案:

答案 0 :(得分:2)

字符串Character access

  

有两种方法可以访问字符串中的单个字符。第一个是charAt()方法:

return 'cat'.charAt(1); // returns "a"
  

另一种方法(在ECMAScript 5中引入)是将字符串视为 类似数组 的对象,其中各个字符对应于一个数字索引:

return 'cat'[1]; // returns "a"

答案 1 :(得分:1)

正如其他人所述,var sentence = "..."创建了一个字符集合或字符数组,然后您将它们循环遍历。

您的代码做了些微改动以帮助解释。

// Create a string (or an array of characters)
var sentence = "I love learning software development";

// Loop over the length of `sentence`.
// `i` is the index in the array from 0 to `sentence.length`
for (var i=0; i < sentence.length; i++) {
  if (sentence[i] !== " ") {
    console.log("char:["+ sentence[i] +"] i:["+ i +"]");
  }
}

答案 2 :(得分:1)

您的问题并不十分清楚。
是否要将 not 对应的每个字符的索引打印为空格(“ ”)?
如果是这样,下面将这样做。

var sentence = "I love learning software development";

for (var i=0; i < sentence.length; i++) {
	if (sentence[i] !== " ") {
		console.log(i);
	}
}

在上面的代码中,只要索引(i)上的值不是空格字符,我就在打印索引i。您的代码sentence[i]告诉它在索引(i)上打印值,该值将是字符串中该位置的字符。

另一方面,如果要在索引i处使用Ascii值,则需要使用charAt函数:sentence.charAt[i]

var sentence = "I love learning software development";

for (var i=0; i < sentence.length; i++) {
	if (sentence[i] !== " ") {
		console.log(sentence.charCodeAt(i));
	}
}

正如另一条评论所建议的那样,“ ...而不是所有对应于长度的整数”尚不清楚。
每个给定的字符串只有1个length。在任何特定时间点的任何数组也是如此。
也许您是说 index
每个字符在任何特定的字符串中都有一个唯一的索引。

要通过以下评论回答您的问题:

index:     0    1    2 3 4 5    6    7 8 9 10 11 12 13 ...
sentence:  I (space) l o v e (space) l e a  r  n  i  n g software development

句子中总共有36个字符。 (如果我计算正确) 索引值从0开始到35 长度是36。但是请记住,最后一个索引号是35,第一个是0。

var sentence = "I love learning software development";

for (var i=0; i < sentence.length; i++) {
    console.log("index:", i, "character:", sentence.charAt(i));
}
console.log ("\nlength: ", sentence.length, "index 0 - ", sentence.length-1);

答案 3 :(得分:0)

也许您有另一种语言的经验,索引字符串的字符会返回整数。

在JavaScript中,您将获得字符串的人工表示。该字符串最初以UTF-16编码,转换为二进制,然后存储在内存中。但是,当您访问它时,由于特定于语言的自动转换,您将获得实际的字符串而不是UTF-16代码。

但是,如果您使用的是Node.js,则可以使用缓冲区存储字符串并直接处理二进制数据。

在JavaScript中,如果要获取代码,可以使用 codePointAt(index)方法:

alert( "z".codePointAt(0) ); // 122
alert( "Z".codePointAt(0) ); // 90