Javascript:数组和For循环基础知识



我是javascript的新手,一直在努力自学基础知识。我确实对C++有一些经验。

我在我用来研究的源代码中遇到了这个例子,for循环对我来说很奇怪:

<html>
<head>
<script type="text/javascript">
<!--
function ReadCookie()
{
   var allcookies = document.cookie;
   alert("All Cookies : " + allcookies );
   // Get all the cookies pairs in an array
   cookiearray  = allcookies.split(';');
   // Now take key value pair out of this array
   for(var i=0; i<cookiearray.length; i++){
      name = cookiearray[i].split('=')[0];
      value = cookiearray[i].split('=')[1];
      alert("Key is : " + name + " and Value is : " + value);
   }
}
//-->
</script>
</head>
<body>
<form name="myform" action="">
<input type="button" value="Get Cookie" onclick="ReadCookie()"/>
</form>
</body>
</html>

有人能解释一下为什么在这些语句的末尾有[0]和[1]吗?

name=cookiearray[i].split('=')[0];value=cookiearray[i].split('=')[1];

编写此语句的更清晰方法是:

 var parts = cookiearray[i].split('='),
     name = parts[0],
     value = parts[1];

这与for循环本身无关。Split返回一个令牌数组;字符串在给定的分隔符处被拆分。您只需访问此数组中的第一个和第二个令牌。

String.split使用指定的分隔符(在本例中为'=')创建一个数组。[0][1]分别选择数组的第一个和第二个元素(Javascript数组元素索引从零开始)。

它们用于访问您创建的数组中的项。

如果您将数组放入变量中并访问该变量,它们的作用就更清楚了,性能也更好了。这样就不必创建两个相同的数组:

var cookie = cookiearray[i].split('=');
var name = cookie[0];
var value = cookie[1];

代码将每个cookie对key=value拆分为键([0])和值([1])。

for循环是一个迭代器。你可以把它想象成一个计数器,或者逐步前进。如果你想做某件事x次,那么for循环就是你最好的朋友。当你第一次学习时,问题是弄清楚如何有效地使用它们。

我将给你一个相关的和非相关的(简化的)例子:

不相关:

// Increase the value of x and print the new value to the console 20 times.
var x = 6;
for(var i = 0; i < 20; i++) {
    x++;
    console.log("Value of x: " + x);
}

如果你仔细观察一下,这真的很合乎逻辑。定义一个迭代变量i,告诉它何时停止(i < 20…所以如果i=20就停止),以及如何进行每次迭代(i++或i+1)。

因此,当i = 0。。。它将把x(x++)的值加1,得到x=7。它对每个迭代都做同样的操作,所以当i = 1,x(7)+1=8,依此类推,直到i=20时,代码就会跳出循环,继续它的快乐之路。当它中断时,我们刚刚在x中添加了20次1。由于x过去等于6,现在等于26。

相关:

// Given array of length 10, print each element to the console
for (var i = 0; i < cookiearray.length; i++){
    console.log(cookiearray[i]);
}

因此,这里的for循环是相同的,它只是迭代,直到i等于数组的长度(在这种情况下是元素的数量)(所以是10次)。当i = 0时,我们的代码在cookiearray[0]打印数组的元素。。。当i = 1打印cookiearray[1]时。。。依此类推。

在示例中,可能会让您感到困惑的是split函数。Split返回一个数组。所以这行:

name = cookiearray[i].split('=')[0];

实际上意味着分配通过在位置CCD_ 21处分割cookiearray的元素而创建的新数组的第一个元素。

让我们假设cookiearray[0] = "Hello=World"。当i = 0时,我们的代码将字符串"Hello=World"拆分为一个新数组,其中0位置的元素为"Hello",然后将其分配给局部变量名。所以name="你好"。

相关内容

  • 没有找到相关文章