js中的反轉主要有如下三種,數字反轉,字符串反轉,數組的反轉數組
var arr = [1,2,3,4,5]; arr = arr.reverse(); console.log(arr); 結果: [5,4,3,2,1]
先將字符串轉換爲數組,而後反轉數組,最後將數組轉合併爲字符串瀏覽器
var str = 'hello world'; str = str.split('').reduce(function(acc, v) { return v + acc }, ''); console.log(str); 結果:'dlrow olleh'
兼容性:
因爲reduce()存在兼容性問題,>ie8的瀏覽器能夠很好的使用,可是ie8是個問題。spa
var str = 'hello world'; str = str.split('').reverse().join(''); console.log(str);
既然有這麼有這個兼容性更好的方法,爲何還要用reduce(),我想聰明的你應該很清楚那就是,運行的效率,前者的效率更高。我在本身電腦上跑的實例對比圖以下:prototype
數字的反轉提及來也很簡單,就是將數字轉化爲字符串而後按照字符串的處理方式處理code
var num = 123456789; num = num.toString().split('').reduce(function(acc, v)) { return v + acc }, ''); console.log(num); 結果:987654321
function objReverse(obj) { if (Object.prototype.toString.call(obj) === '[object String]') { obj = obj.split(''); return stringReverse(obj); } else if (Object.prototype.toString.call(obj) === '[object Number]') { obj = obj.toString().split(''); return +stringReverse(obj); } else if (Object.prototype.toString.call(obj) === '[object Array]') { return obj.reverse(); } function stringReverse (obj) { if(Array.prototype.reduce !== 'undefined') { return obj.reduce(function(acc, v) { return v + acc; }, '') } else { return obj.reverse().join(''); } } }
歡迎吐槽 :)rem