在JavaScript中将字符串当成数组一样进行操作

作者:admin     字体:[增加 减小]    类型:原创
数组操作时有很多好用的方法,而字符串相当于一个稠密的只读数组,所以可以将数组中的一些方法应用于字符串上。具体如何操作,详见文章内容。

在ECMAScript5中,字符串的行为类似于只读的数组。除了用charAt()方法来访问单个的字符以为,还可以使用方括号:

var s = "test";
s.chartAt(0)    //"t"
s[1]    //"e"

当然针对字符串的typeof操作符仍然返回"string",但是如果给Array.isArray()传递字符串,它将返回false。

可索引的字符串的最大好处就是简单,用方括号代替了charAt()调用,这样更加简洁、可读并且可能更高效。不仅如此,字符串的行为类似于类似于数组的事实使得通用的数组方法可以应用到字符串上。例如:

s = "JavaScript";
Array.prototype.join.call(s," ");   //"J a v a S c r i p t "
Array.prototype.filter.call(s,function(x){
    return x.match(/[^aeiou]/); //只匹配非元音字母
}).join("");    //JvScrpt

s = "JavaScript";
var ss = "";
Array.prototype.forEach.call(s,function(v,i){
    ss += v + v;
})
console.log(ss);    //JJaavvaaSSccrriipptt

字符串是不可变值,故当把它们作为数组看待时,它们是只读的。如push()、sort()、reverse()和splice()等数组方法会修改数组,它们在字符串上是无效的,而且还会导致错误。