JavaScript 保存数组到Cookie的代码_javascript技巧_脚本之家

第一点: 复制代码 代码如下: var
lennon=Array(); lennon[“name”]=”windy”; lennon[“year”]=”1989″;
lennon[“living”]=true; alert; 结果:lennon.length 为 0原因:
用以下方式增加数组元素,将不改变数组的长度 arr[“a”]=3;第二点:复制代码 代码如下: var foo2 = []; foo2[‘3’]
= 3; foo2[‘age’] = 20; debugger; alert; foo2.length又是为4
所有没有赋值的数组对象,都将被定义为undefined
JavaScript可以自动重新调整数组的大小,这种自动调整大小的机制,更容易出现越界数组,而且更难发现。所以要加倍注意类似的情况。

JavaScript中数组是无法直接保存为Cookie的,那要将数组转存为字符串,再保存在Cookie中,简单的一维数组我们直接用toString()或者join就可以了:
JavaScript中toString函数方法是返回对象的字符串表示。
使用方法:objectname.toString
其中objectname是必选项。要得到字符串表示的对象。
radix是可选项。指定将数字值转换为字符串时的进制。 join是其中一个方法。
格式:objArray.join
用途:以seperator指定的字符作为分隔符,将数组转换为字符串,当seperator为逗号时,其作用和toString()相同。
如果多维数组,我们就要用JSON了。 JSON(JavaScript Object Notation)
是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript
Programming Language, Standard ECMA-262 3rd Edition – December
1999的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,
C++, C#, Java, JavaScript, Perl,
Python等)。这些特性使JSON成为理想的数据交换语言。
这里我们使用PHP2JS的函数库来实现,需要 json_decode 和
json_encode这两个函数,懂PHP的朋友可以理解这两个函数的意思。json_decode
是JSON到数组,json_encode 是数组到JSON。 需要注意的是JavaScript 保存
Cookie 会将一些字符过滤,如:”{” 被过滤为 “{_” 等。所以在获取 Cookie
时要过滤这些字符,不然 json_decode 会出错。 下面简单举例如下: 复制代码 代码如下:

截取数组:slice:
返回数组中指定开始位置倒结束位置的数组。不改变原数组内容。
另外还有一个重要的方法,插入、删除或替换数组元素方法:
splice(startIndex,howmany,element1~elementX):会修改原数组内容。参数含义分别为:“指定开始位置”,“删除多少个元素个数”,“添加到数组中的新元素”。
相关运用 //题目一:”A[B]C[D]E[F]G”将其分为两个数组,分别是 ACEG 和
[B][D][F]. 复制代码 代码如下:
function QuestionFn1() { var str = “A[B]C[D]E[F]G”; var
oGetTwoArray = new GetTwoArray(); //取左右括号中的值
oGetTwoArray.GetLeftAndRightValue; oGetTwoArray.GetNoLeftAndRightValue;
var array1 = oGetTwoArray.arrBetweenLeftRight; var array2 =
oGetTwoArray.arrNoLeftRight; alert; alert; } //找到左右括号的index
function GetTwoArray() { this.indexLeft = 0; //左括号索引
this.indexRight = 0; //右括号索引 this.arrBetweenLeftRight = [];
//数组:存放左右括号中的字母 this.arrNoLeftRight = [];
//数组:存放没有括号包围的字母 //取左右括号中的值
this.GetLeftAndRightValue = function { //找到字符串中左括号的index
this.indexLeft = str.indexOf; this.indexRight = str.indexOf var value =
str.substring(this.indexLeft, this.indexRight + 1); //存放到数组中
this.arrBetweenLeftRight.push; //剩下的str var restStr = str.substr;
//如果还有左右括号则继续找 if != -1 && restStr.indexOf {
this.GetLeftAndRightValue; } } //取没有左右括号包围的值
this.GetNoLeftAndRightValue = function { //找到字符串中左括号的index
this.indexLeft = str.indexOf; this.indexRight = str.indexOf;
//取没有左右括号包围的值 var value = str.substring; if {
//因为第一个就有可能就是左括号 //存放到数组中 this.arrNoLeftRight.push;
} //剩下的str var restStr = str.substr; //如果还有左右括号则继续找 if !=
-1 && restStr.indexOf { this.GetNoLeftAndRightValue; }
//剩下的没有左右括号了,就全部添数组里去 else if == -1 &&
restStr.indexOf { this.arrNoLeftRight.push; } } }
//题目二:有两个有序整数数组,例如和【2, 4, 6, 7, 8, 10,
13】,设计一个函数使两个数组合并,并且剔除掉两个数组里重复的元素. 复制代码 代码如下: function QuestionFn2() { var
arr1 = [1, 3, 5, 7, 9]; var arr2 = [2, 4, 6, 7, 8, 10, 13];
//循环arr2中的每一个元素 去跟 arr1中的每一个元素 比较 for (var j = 0; j
< arr2.length; j++) { for (var i = 0; i < arr1.length; i++) {
//如果第二个数组中的数 小于数组一中的 某个数 则插到他前面 if {
arr1.splice; break; } //相等则剔除 else if { arr1.splice; break; }
//如果 arr2[j] 比 数组1中的 最后一个数还大 则插到最后面去 else if
(arr2[j] > arr1[arr1.length – 1]) { arr1.push; } } } alert; }
//题目三:给定一个整数数组,例如和一个数字,例如10,请设计一个函数找出两个元素,并且使这两个数的和为给定数字,并打印出来.
复制代码 代码如下: function QuestionFn3()
{ var sum = window.prompt; var arr = [2, 4, 5, 6, 7, 8]; var isFind =
false; //记录是否存在 for (var i = 0; i < arr.length; i++) { for (var
j = i + 1; j < arr.length; j++) { if (arr[j] + arr[i] == sum) {
alert(arr[i] + “+” + arr[j] + “=” + sum); isFind = true; } } }
//如果没有找到 if { alert; } } 更多javascript
数组基础可以参考javascript数组使用调用方法汇总

在学习《JavaScript权威指南》第六版的第7.1节中通过数组直接量创建数组时,我们可以不给数组的某个元素赋值,它就会使undefined。虽然是undefined,但我们调用数组对象的length属性时undefined也会导致length加1。有如下所示的四种情况:

还要注意的就是中文问题,可能会乱码,建议将多字节字符及中文等用 base64
编码解码: 复制代码 代码如下:

var undef0 = [,,];var undef1 = [1,,];var undef2 = [,1,];var undef3 = [,,1]; console.log;console.log;console.log;console.log;

base64_decode 依赖 utf8_decode ,base64_encode 依赖 utf8_encode。
PHP2JS是开源项目,是将PHP的部分函数实现到JavaScript。

我们可以猜一下四个console.log输出的长度各是多少,之前我一定会猜都是3。实际结果如下所示:

这是为什么呢,答案就是:数组直接量的语法允许有可选的结尾的逗号,故[,,]、[1,,]、[,1,]这三种情况JS引擎会认为最后一个逗号是结尾的逗号,所以就认为只有两个元素,而[,,1]这种情况人为的给最后一个逗号后面又添加了一个元素,所以最后一个逗号就不是结尾了,所以我们就能想到[,,1,]的长度仍然为3。

以上所述是小编给大家介绍的JavaScript中省略元素对数组长度的影响,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章