要把一个xml字符串转(“1,2,3,4,5,6,7,8,1,2”)换成数组的形式,每个值都应该是number类型的,想当然的就用了split方法,结果。。。问题来了,服务器要求数组的值是数字,而split是字符方法,所产生的数组也是字符串,麻烦来了。。这么大的数据量总不能一个一个的for循环parseInt吧,想想就头痛!
天无绝人之路,原来js这么强大,有很多方法可以解决,只不过是我之前不知道而已,这里总结下,并简单的区分下优劣:
1. eval
var arrstr ="["+"1,2,3,4,5"+"]";
eval(arrstr);
//eval方法是js的全局方法,接收字符串,返回字符串的值并执行其中的代码。
2. new Function
var arr = new Function("return "+arrstr)();
alert(arr);
//通过alert可以看出arr输出[1,2,3,4,5],通过创建匿名函数并执行的方法将字符串转换成数组,完成字符解析,该方法只接受字符串。
3.native
var arr=JSON.parse(arrstr);
alert(arr);
//JSON.parse方法是浏览器的原生方法,目前在chrome,firefox 3.6+,IE 8+,safari 5+,opera都具有良好的支持,是上述几种方法中执行效率最高的方法。
几种方法的执行效率比较如下,firefox如果把firebug等addon都去掉的话eval效率会高很多,下图是一个比较老的比较结果,现在的chrome浏览器,safari浏览器,opera,firefox,ie都已经支持了JSON.parse方法:
通常情况下尽量避免使用eval方法和new Function方法,推荐使用JSON原生方法,如果必须要使用eval和new Function二选一的话,那就使用new Function方法。