JavaScript 数组和字符串之间的转换

数组对象和字符串都拥有实现这些数据类型间的转换的方法,使得数组可以通过搜索字符串或cookie传递给其他页面。

要把一个简单数组(一维)转换成字符串,首先应选择一个字符,在将数组的值嵌入字符串的时候,作为唯一的分隔符来使用。这个字符不能出现在任何元素的数据中。用这个字符作为参数调用数组的join()方法。下述语句在转换成字符串形式后,用逗号作为元素间的分隔符:

var arrayAsString = myArray.join(",");
原始数组在转换过程中不会受到影响。

如果有一个字符串,其中的每个数据都用分隔符分隔,要把它转换成数组,可以指定这个分隔符作为字符串值或字符串对象的split()方法的参数:
var restoredArray = myRegularString.split(",");

split()方法将执行字符串的构造方法,自动将分隔符之间的值作为新数组的元素。分隔符本身不会成为数组的一部分。

讨论

Discussion

尽管上述例子演示了把单个字符作为字符串的分隔符,但分隔符可以是任何字符串。例如,如果想要把整个数组作为垂直列表显示在textarea元素中,可以使用特殊字符\n在元素间强制换行;类似的,如果要把数据的格式调整为XHTML列表,可以使用字符串<br />作为join()方法的分隔符;或者如果数组元素中包含了全部所需的XHTML代码,就指定空字符串作为join()方法的参数。然后,将这些返回字符串赋给元素的innerHTML属性,就可以在页面的正文中显示。

join()方法仅适用于简单数组。对于多维数组,该方法只能用于那些嵌套在最深层的简单数组上。

字符串值或字符串对象的split()方法更为强大。可以使用正则表达式作为分隔参数。例如,考虑逗号分隔的表示价格的字符串:

var amounts = "30.25,120.00,45.09,200.10";

如果要创建一个仅包含这些值的整数部分的数组,可以创建一个正则表达式,查找一个句点后面跟着两个数字,以及一个可选的逗号(以满足最后一个元素):

var amtArray = amounts.split(/\.\d{2},?/);   // result = [30, 120, 45, 200,]

当分隔符位于字符串的末尾时,对该字符串使用split()方法会产生的一个副作用是,这个方法会为末尾的分隔符之后并不存在的项创建一个数组元素。一般情况下,分隔符不会出现在字符串的末尾,但是一旦出现了,就要小心这个额外的空数组元素。

split()方法的第二个可选参数是一个整数,它表示从字符串传送到新数组的项的个数。这样,如果字符串总是以分隔字符或分隔序列结束的话,可以限制split()方法仅返回在字符串中项的实际个数(假定你的脚本从字符串解析或其他操作中知道或获取了这些信息)。这个参数不是正式的ECMAScript标准的一部分,但是在主流浏览器中都得到了实现。

实际上,数组到字符串的转换仅限于那些能方便地表示为字符串的数组数据,例如数字、布尔值和其他字符串。如果数组的元素由对象的引用组成(自定义对象或DOM对象),这样的对象没有合适的或有意义的字符串表示。对于DOM对象数组,可以考虑取得对象的id属性,并把它们保存在字符串中。尽管对象的特征不会被传递,但如果另一个页面中也存在相同的对象,那么通过这个ID就能够重新正确引用这个对象(通过document. getElementById()方法)。参见3.13节和8.14节关于将对象转换为字符串的思路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值