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