js 基础总结(常用的反转)

js中的反转

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是个问题。


var str = 'hello world';
str = str.split('').reverse().join('');
console.log(str);

既然有这么有这个兼容性更好的方法,为什么还要用reduce(),我想聪明的你应该很清楚那就是,运行的效率,前者的效率更高。我在自己电脑上跑的实例对比图如下:

reverse

数字的反转

数字的反转说起来也很简单,就是将数字转化为字符串然后按照字符串的处理方式处理

var num = 123456789;
num = num.toString().split('').reduce(function(acc, v)) {
    return v + acc
}, '');

console.log(num);
结果:987654321

针对以上3种情况的一个综合解决方案

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('');
        }
    }
}

欢迎吐槽 :)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值