繁体   English   中英

Javascript:数组和For循环基础

[英]Javascript: Arrays and For Loop Basics

我是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]吗?

名称= cookiearray [i] .split('=')[0]; 值= 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拆分为key( [0] )和value( [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乘以1至20。 由于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];

...实际上是指分配在位置i处分割cookiearray的元素而创建的新数组的第一个元素。

假设cookiearray[0] = "Hello=World" i = 0 ,我们的代码将字符串“ Hello = World”拆分为一个新数组,其中位于0位置的元素为“ Hello”,然后将其分配给局部变量名称。 因此,名称=“ Hello”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM