Javascript:数组和For循环基础
我是javascript新手,一直在努力自学基础知识。我有一些C++的经验。 我在用于学习的源代码中遇到了这个示例,for循环对我来说很奇怪:Javascript:数组和For循环基础,javascript,arrays,loops,Javascript,Arrays,Loops,我是javascript新手,一直在努力自学基础知识。我有一些C++的经验。 我在用于学习的源代码中遇到了这个示例,for循环对我来说很奇怪: <html> <head> <script type="text/javascript"> <!-- function ReadCookie() { var allcookies = document.cookie; alert("All Cookies : " + allcookies );
<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]。拆分('=')[0];
value=cookiearray[i]。拆分('=')[1] 代码将每个cookie对
key=value
拆分为key([0]
)和value([1]
)。这与for循环本身无关。Split返回一个令牌数组;字符串在给定的分隔符处拆分。您只需访问此数组中的第一个和第二个令牌。编写此语句更清晰的方法是:
var parts = cookiearray[i].split('='),
name = parts[0],
value = parts[1];
使用指定的分隔符(在本例中为“=”)创建数组。
[0]
和[1]
分别选择数组的第一个和第二个元素(Javascript数组元素索引从零开始)。这些元素用于访问您创建的数组中的项
如果将数组放入一个变量并访问该变量,它们的作用会更清楚,性能也会更好。这样,您就不必创建两个相同的阵列:
var cookie = cookiearray[i].split('=');
var name = cookie[0];
var value = cookie[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);
}
// 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”,然后将其分配给局部变量名。所以name=“Hello”。是循环还是拆分让你困惑?如果是拆分,请看返回的是什么split()
确实令人困惑,因为它执行了两次(没有任何结果)。第二次拆分(在for循环中)是将cookie键/值配对拆分为可用数组。我假设数据的形式是Key=Value;键=值;Key=Value
就像cookies一样…但是.split()函数用于字符串,所以不要陷入Key/Value的讨论中…这不是.split()的固有特性或(最)常见用法。Key[0]和[1]什么都没有?您最好将split
(两者中的哪一个?)重命名为更具描述性的版本。