资讯专栏INFORMATION COLUMN

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

ACb0y / 3339人阅读

摘要:中的反转中的反转主要有以下三种,数字反转,字符串反转,数组的反转数组的反转结果字符串的反转先将字符串转换为数组,然后反转数组,最后将数组转合并为字符串结果兼容性由于存在兼容性问题,的浏览器可以很好的使用,但是是个问题。

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(),我想聪明的你应该很清楚那就是,运行的效率,前者的效率更高。我在自己电脑上跑的实例对比图如下:

数字的反转

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

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

欢迎吐槽 :)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92255.html

相关文章

  • Spring理论基础-控制反转和依赖注入

    摘要:控制反转和依赖注入的关系也已经清晰了,它们本质上可以说是一样的,只是具体的关注点不同。我的博客地址参考资料控制反转和依赖注入的理解那些年搞不懂的高深术语依赖倒置控制反转依赖注入面向接口编程控制反转和依赖注入 序 第一次了解到控制反转(Inversion of Control)这个概念,是在学习Spring框架的时候。IOC和AOP作为Spring的两大特征,自然是要去好好学学的。而依赖...

    FullStackDeveloper 评论0 收藏0
  • 【STM32】位操作、按位与、按位或、按位异或、取反、左移、右移等基础 C 语言知识补充

    摘要:总结对于原二进制数来说,是不变,是反转。的位数对应原二进制数的位数,对各位进行屏蔽,全部置。左移左移与右移比较类似,是将目标二进制数字向左右移动相应的位数。语言中的逻辑运算符按位与,按位或,按位异或,取反,左右移位不完全手册立创开源 ...

    waruqi 评论0 收藏0
  • 深入剖析 Laravel 服务容器

    摘要:划下重点,服务容器是用于管理类的依赖和执行依赖注入的工具。类的实例化及其依赖的注入,完全由服务容器自动的去完成。 本文首发于 深入剖析 Laravel 服务容器,转载请注明出处。喜欢的朋友不要吝啬你们的赞同,谢谢。 之前在 深度挖掘 Laravel 生命周期 一文中,我们有去探究 Laravel 究竟是如何接收 HTTP 请求,又是如何生成响应并最终呈现给用户的工作原理。 本章将带领大...

    abson 评论0 收藏0
  • 从源码看 Promise 概念与实现

    摘要:从源码看概念与实现是异步编程中的重要概念,它较好地解决了异步任务中回调嵌套的问题。这些概念中有趣的地方在于,标识状态的变量如都是形容词,用于传入数据的接口如与都是动词,而用于传入回调函数的接口如及则在语义上用于修饰动词的副词。 从源码看 Promise 概念与实现 Promise 是 JS 异步编程中的重要概念,它较好地解决了异步任务中回调嵌套的问题。在没有引入新的语言机制的前提下,这...

    kel 评论0 收藏0
  • 基础带你看Spring源码——IOC控制反转

    摘要:依赖注入是向某个类或方法注入一个值,其中所用到的原理就是控制反转。但发现更多时间是在调和的源码。里面就是从中取出这个,完成控制反转的。控制反转的优点最后来以我个人观点谈谈控制反转的优点吧。控制反转为了降低项目耦合,提高延伸性。 本章开始来学习下Spring的源码,看看Spring框架最核心、最常用的功能是怎么实现的。网上介绍Spring,说源码的文章,大多数都是生搬硬推,都是直接看来的...

    wing324 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<