这篇文章主要介绍了 js 实现字符串和数组之间相互转换操作的相关资料,感兴趣的小伙伴们可以参考一下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
- var Str="abc-mng-zhang-mayi";
- var newArray=Str.split("-");
- console.log(newArray);
由输出的结果可以看出,split() 函数已经将字符串转换成一个数组。
二. 将数组转换为字符串
此操作可以使用 Array 对象的 join() 函数来实现,此函数可以将数组中的元素以指定的字符连接起来,然后返回产生的字符串。
代码如下:
- var newArray=["abc","mng","zhang","mayi"];
- var Str=newArray.join("-");
- console.log(Str);
以上代码实现了我们的要求,使用 "-" 将数组元素连接了起来, 并生成了一个字符串。
上面的两个例子都是使用的自带的函数,当然我们也可以自己写,这样灵活性更大,并且知根知底。
三. 自定义字符串转换为数组
- function StringToArray(str,substr)
- {
- var arrTmp=new Array();
- if(substr=="")
- {
- arrTmp.push(str);
- return arrTmp;
- }
- var i=0,j=0,k=str.length;
- while(i<k)
- {
- j=str.indexOf(substr,i);
- if(j!=-1)
- {
- if(str.substring(i,j)!="")
- {
- arrTmp.push(str.substring(i,j));
- }
- i = j+1;
- }
- else
- {
- if(str.substring(i,k)!="")
- {
- arrTmp.push(str.substring(i,k));
- }
- i=k;
- }
- }
- return arrTmp;
- }
- var Str="abc-mng-zhang-mayi";
- console.log(StringToArray(Str,"-"));
- console.log(StringToArray(Str,"-").length);
以上代码同样实现了将字符串转换为数组的功能,下面对代码进行一下注释:
代码注释:
1.function StringToArray(str,substr){},此函数用来进行转化,str 是要被转换的字符串,substr 是分隔符。
2. var arrTmp=new Array(),声明一个数组,用来存放分割的字符串片段。
3.if(substr=="") {arrTmp.push(str);return arrTmp;},如果字符串分隔符为空,那么就将整个字符串放入数组。
4. var i=0,j=0,k=str.length; 声明三个变量,并赋初值,k 的值是字符串中字符的个数。
5.while(i
6.j=str.indexOf(substr,i),用来检测分隔符在字符串出现的位置,如果 indexOf() 函数带有两个参数的,第二个参数是查找指定字符开始的位置,这段代码要结合下面的代码理解。
7.if(j!=-1),如果查找的分隔符存在。
8.if(str.substring(i,j)!=""){},截取从开始查找位置到查找到第一个分隔符之间的字符串。
9.arrTmp.push(str.substring(i,j));,将截取的字符串放入数组。
10.i=j+1; 将开始查找的位置设置为分隔符的下一个字符。
11.else{},如果没有查找。
12.if(str.substring(i,k)!=""){arrTmp.push(str.substring(i,k));},如果最后一个分隔符之后的字符不为空,那么就添加到数组。
13.i=k,将 i 设置为 k,这样循环就停止了。
14.return arrTmp; 返回数组。
相关知识:
1.push() 方法的定义和用法:
此方法可以给指定的数组末尾追加一个或者多个新的元素,并返回数组的长度。
注: 新元素是直接追加到原有的数组,而不是创建新的数组。
点击可参阅数组更多属性和方法。
语法结构:
arrayObject.push(元素一, 元素二,...., 元素 N)
参数列表:
参数 描述
参数(一...N) 必需。要被追加的新元素。
实例代码:
- var a = [1,2,3];
- console.log(a.push("zhang","dao"));
2.indexOf() 方法的定义和用法:
此方法返回指定的字符串在字符串中首次出现的位置。
如果没有检索到相应的字符串,返回值是 - 1。
注: 此方法对大小写敏感。
语法结构:
stringObject.indexOf(substring,startindex)
实例代码:
- var a=new String("abcdefg")
- console.log(a.indexOf("b"));
b 在字符串 abcdefg 中第二个出现。输出结果: 1。
- var a=new String("abcdefg")
- console.log(a.indexOf("B"));
此方法对大小写敏感的,所以字符串 abcdefg 中并没有大写的 B 出现。输出结果:-1。
- var a=new String("abcdefg")
- console.log(a.indexOf("e",4));
检索开始的位置是 4,字符串首次出现的位置还是从字符串的起始开始计算的。输出结果: 4。
3.substring() 函数。
四. 自定义数组转换为字符串
- function ArrayToString(arr,str)
- {
- var strTmp="";
- for(var i=0;i<arr.length;i++)
- {
- if(arr[i]!="")
- {
- if(strTmp=="")
- {
- strTmp = arr[i];
- }
- else
- {
- strTmp=strTmp+str+arr[i];
- }
- }
- }
- return strTmp;
- }
- var newArray=["abc","mng","zhang","mayi"];
- console.log(ArrayToString(newArray,"-"));
以上代码实现了我们的要求,可以将数组转换为字符串,下面对代码进行一下注释:
代码注释:
1.function ArrayToString(arr,str){}, 第一个参数是数组,第二个参数是连接字符串。
2.var strTmp="",声明一个空字符串。
3.for(var i=0;i
4.f(arr!=""){} 如果数组元素不为空。
5.if(strTmp=="") {strTmp=arr;},如果字符串中也为空,那么就将数组中的此元素赋值给字符串 strTmp。
6.else{strTmp=strTmp+str+arr}, 否则进行字符串连接。
7.return strTmp,返回转换后的字符串。
来源: http://www.phperz.com/article/17/0215/267622.html