要把一個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方法。
