js多串

时间:2015-10-20 09:51:41

标签: javascript

我试图理解这段代码:

var text = "Hi, my name is Tyler. How are you?";
var myName = "Tyler";
var hits = [];
for (i = 0; i<= text.length; i++) {
  if (text[i] === "T") {
    for (j = i; j = (i + myName.length); j++) {
      hits.push(i);
    }
  }
}

text [i]究竟是什么意思?对我来说,它似乎在说&#34;在文本数组中找到i元素&#34;。我不明白这有两个原因。第一个是i元素没有被定义为任何东西。是说要搜索文本中的每个元素&#34;数组&#34;直到它匹配T,这是我名字的第一个字母?第二,为什么它只是一个字符串时将文本表示为数组?文本后面的[]括号是不是指将文本称为数组?

对不起,如果这个问题没有意义,但我对这一切感到非常困惑!提前感谢能够为我解答此问题的任何人!

3 个答案:

答案 0 :(得分:4)

  

text [i]实际意味着什么?

“从i获取属性text。”

  

在文本数组中找到i元素

text是一个字符串,而不是一个数组。

  

第一个是i元素没有被定义为任何东西

i在前一行定义:

for (i = 0; i<= text.length; i++) {
  

第二,为什么它只是一个字符串时将文本表示为数组?

不是。 []不是特定于数组的。

请参阅Strings: Character access

  

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

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

答案 1 :(得分:3)

JavaScript字符串和数组共享一个共同点:它们都是可迭代的,这意味着我们可以一次检查一个元素。我们引用带有下标的元素[index],其中index是0到length -1范围内的数字。

var myArray = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
console.log(myArray.length); // 10
console.log(myArray[myArray.length]); // undefined
console.log(myArray[myArray.length-1]); // 9

var myString = "0123456789";
console.log(myString.length); // 10
console.log(myString[myString.length]); // undefined
console.log(myString[myString.length -1]); // 9

我们发现两者都有一个共同的索引特征:

它们都是零索引的。 他们都使用索引下标。 它们都是可迭代的(我们可以遍历元素)。 为了显示差异,我们需要尝试分配。

myArray[myArray.length] = 10;
console.log(myArray[myArray.length-1]); // 10
myString[myString.length] = "A";
console.log(myString[myString.length-1]); // undefined

进一步说明,

myArray[5] = 55;
console.log(myArray[5]); // 55
myString[5] = "f";
console.log(myString[5]); // 5

这表明虽然我们可以通过引用它的索引将值或对象赋给数组元素,但我们不能用字符串来做。描述这一点的术语是可变性。数组是可变的(我们可以改变它的元素)。字符串是不可变的(我们不能改变它的字符)。

所以我们现在知道文本[i]是什么。索引i处字符串文本中的字符,其中i从零开始,即字符串开头的索引。

答案 2 :(得分:1)

JavaScript字符串和数组共享一个共同点: 它们都是可迭代的,

示例

阵列

var myArray = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
console.log(myArray.length); // 10
console.log(myArray[myArray.length]); // undefined
console.log(myArray[myArray.length-1]); // 9

字符串

var myString = "0123456789";
console.log(myString.length); // 10
console.log(myString[myString.length]); // undefined
console.log(myString[myString.length -1]); // 9