javascript 数组和字符串的转化

字符串转化为数组

'abcde' -> ['a', 'b', 'c', 'd', 'e']
简单一点的方法,__String.prototype.split__可以将字符串转化为数组,分隔符为空。如下所见

> 'abcdefg'.split('')
[ 'a', 'b', 'c', 'd', 'e', 'f', 'g' ]

那么其它类数组(Array-like)对象呢,比如处理DOM常见的HTMLCollection。在jQuery中,jQuery.fn.toArray() 实现了这个功能。

> arr = $p.children
HTMLCollection[dl.index, dl.cat, dl.special, dl.user, dl.cooperation, dl.mobile, div.usercenter]
> $(arr).toArray()
[dl.index, dl.cat, dl.special, dl.user, dl.cooperation, dl.mobile, div.usercenter]

源码如下,slice值为 [].slice

toArray: function() {
    return slice.call( this );
},

发现 Array.prototype.slice() 可以办到。接下来封装成一个函数

function toArray(obj) {
    return [].slice.call(obj);
}

console.log(toArray('abcdef'));

另外,可以通过bind使这一步更加简单。

var toArray = Function.prototype.call.bind(Array.prototype.slice);

数组转化为字符串

> [ 'a', 'b', 'c', 'd', 'e', 'f', 'g' ].join('')
'abcdefg'

参考