js操作字符串、数组的常用方法总结

对于像我这种记忆力不是很好的人,这样的整理还是很有必要的,虽然是很常用的方法,有时候也会因为强迫症要验证一次,在这里总结一下,方便以后查看。

字符串

在Javascript中字符串是固定不变的,也就是说,当使用某种方法处理字符串的时候,类似于replace()等,会返回一个新的字符串,也就是说字符串是不能被修改的。

可以使用“+”号将两个字符串进行连接:

msg = "hello,"+"word";  //生成字符串hello,word

字符串具有length属性,可以使用charAt()方法配合length属性返回字符串某个位置上的元素:

var s = "hello,word";
s.charAt(0)        //返回 h
s.charAt(s.length-1)    //        返回 d

当需要根据索引截取一个字符串的时候,可以使用substring()方法或者slice()方法:

s.substring(1,4)        //返回索引位置为1、2、3的字符组成的字符串‘ell’;
s.slice(1,4)            //同上返回‘ell’
s.slice(0)                //返回整个字符串‘hello word’
s.slice(-3)                //从末尾开始返回后三个字符‘ord’
s.clice(0,-3)            //返回‘ellow,w’
//负值的索引,可以理解为从最后的位置开始算起,但是并不存在‘-0’

当需要查找摸个字符在字符串中的位置的时候,可以使用indexOf()方法,返回该字符的索引位置:

s.indexOf("o");            //返回“4”,字符“o”首次出现位置的索引;
s.lastIndexOf("o")        //这是最后一次出现“o”的位置,返回7;
s.indexOf("1",3);        //这是返回在位置3以及3以后首次出现“o”的索引,返回4;

可以使用split()方法将字符串分割成数组:

s.split(",")            //根据“,”这一标识符,将字符串分割成一个数组,返回的数组为['hello','word'],值得注意的是这里面已经不包含“,”这个字符了。

同样,我们还可以使用replace()方法替换字符串中的某个字符:

s.replace("h","H");        //返回“Hello,word”,但是如果直接用“h”,作为标示,这个方法只会替换一次,也就是说如果字符串中有许多的“h”,也只会替换一次。想要全部替换可以选择使用正则表达式;
s.replace(/\l/g,"L");    //这样就可以换掉所有的“l”;
s.toUpperCase();        //返回“HELLO,WORD”;

数组

可以使用push()方法,向一个数组的末尾添加元素:

var arr = ['heool','word'];
arr.push('!');        //arr=['heool','word','!'];

对于数组的遍历,有两种方法,一种是根据数组的length属性,利用for循环进行遍历;另一种可以使用for/in循环,

for(var index in array){
    var value  = array[index];
}

数组也可以转换成字符串,使用join()方法,可以将数组转换成字符串:

var arr = ['1','2','3'];
arr.join(",");        //返回“1,2,3”;

sort()方法可以对数组进行排序,当不传入参数时,数组元素以字母表顺序排序:

var arr = ['banana','cherry','apple'];
arr.sort();
var str = a.join(",");    //str的值是“apple,banana,cherry”;
//如果数组中包含undefined,sort方法会把它放在数组的尾部。
//sort方法把数组中的每个对象转换成字符串,然后进行比较,那么 11 会被放在 2 的前面。所以我们需要传递一个函数给sort用来比较纯数字的大小,这个函数有两个参数,排序的规则是根据这个函数的返回值,返回值大于零,第一个参数在后,返回值小于零,第一个参数在前,返回值等于零,顺序无所谓。
a.sort(function(a,b){return a-b;});

连接两个数组可以使用concat(),这个方法返回一个连接好的新数组:

var a = [1,2,3];
a.concat(4,5);        //返回[1,2,3,4,5];
a.concat([4,5]);    //返回[1,2,3,4,5];

数组也有slice()方法,slice()方法不会修改原来的数组,而是返回一个新的数组:

var a = [1,2,3,4,5];
a.slice(0,3);    //返回[1,2,3];
a.slice(3);        //返回[4,5];
a.slice(1,-1);    //返回[2,3,4];参数-1指定了最后一个元素
a.slice(-3,-2);    //返回[3];

slice()能够从数组中删除元素、插入元素到数组中或者同时完成这两件事情,var a = [1,2,3,4,5,6,7,8];a.splice(4),当只有一个参数的时候,从数组的起点位置开始到数组结尾的所有元素都会被删除,这个方法会返回被删除的[5,6,7,8],这时数组a的值是[1,2,3,4],a.splice(1,2);返回[2,3],现在a的值是[1,4],a.splice(1,0,’a’,’b’); //返回[‘a’,’b’],现在a的值是[1,’a’,’b’,4];

向数组中添加或者删除元素,还有push(),pop(),unshift(),shift()四个方法,分别是想数组末尾添加元素,从数组末尾删除元素,在数组头添加一个或多个元素,shift()删除数组的第一个元素并返回。