数据类型判断和数据类型转换

var utils ={};var typeMap = {
        ‘[object Null]‘: ‘null‘,
        ‘[object Undefined]‘: ‘undefined‘,
        ‘[object String]‘: ‘string‘,
        ‘[object Number]‘: ‘number‘,
        ‘[object Boolean]‘: ‘boolean‘,
        ‘[object Function]‘: ‘function‘,
        ‘[object Date]‘: ‘date‘,
        ‘[object Array]‘: ‘array‘,
        ‘[object Object]‘: ‘object‘,
    };
    utils.dataType = function (data) {
        return typeMap[Object.prototype.toString.call(data)];
    };
    //是否为数组
    utils.isArray = function (arr) {
        return this.isFunction(Array.isArray) ? Array.isArray(arr) : this.dataType(arr) == ‘array‘;
    };

    //是否为undefined
    utils.isUndefined = function (arr) {
        return typeof arr == ‘undefined‘;
    };

    //是否为function
    utils.isFunction = function (func) {
        return typeof func == ‘function‘;
    };

    /**
     * 数组转obj
     * arr 转换的数组
     * deepTranslate  是否深转换
     * */
    utils.arrayToObj = function (arr, deepTranslate) {
        var obj = {};
        deepTranslate = deepTranslate || false;
        if (this.isArray(arr) && arr.length > 0) {
            for (var i = 0, len = arr.length; i < len; i++) {
                var _arr = arr[i];
                if (typeof _arr == ‘object‘) {
                    if (this.isArray(_arr)) {
                        var _obj = {};
                        var len = _arr.length;
                        if (deepTranslate) {
                            for (var j = 0; j < len; j++) {
                                _obj[j] = (this.arrayToObj(_arr[j]));
                            }
                        }
                        else {
                            _obj = _arr;
                        }
                        obj[i] = _obj;
                    }
                    else if (_arr == null) {
                        obj[i] = _arr;
                    }
                    else {
                        if (this.isUndefined(_arr.k)) {
                            obj[k] = _arr.v;
                        }
                        else if (this.isUndefined(_arr.key)) {
                            obj[key] = _arr.value;
                        }
                        else {
                            obj[i] = _arr;
                        }
                    }
                }
                else {
                    obj[i] = arr[i];
                }
            }
        }
        return obj;
    };
 /**
     * 数据合并
     * arg_0 合并后被修改数据
     * arg_1 合并原数据
     * deepClone  是否深克隆
     * */
    utils.dataCombine = function (arg_0, arg_1, deepClone) {
        deepClone = deepClone || false;
        arg_0 = arg_0 || {};
        for (var item in arg_1) {
            if (arg_1.hasOwnProperty(item)) {
                var copy = arg_1[item];
                if (deepClone && this.isArray(copy)) {
                    arg_0[item] = this.dataCombine([], arg_1[item], deepClone);
                }
                else if (deepClone && this.dataType(copy) == ‘object‘) {
                    arg_0[item] = this.dataCombine({}, arg_1[item], deepClone);
                }
                else if (copy !== undefined) {
                    arg_0[item] = copy;
                }
            }
        }
        return arg_0;
    };

    /**
     * 数据克隆
     * arg_1 克隆复制原数据
     * deepClone  是否深克隆
     * */
    utils.clone = function (arg_1, deepClone) {
        deepClone = deepClone || false;
        var arg_0 = this.isArray(arg_1) ? [] : {};
        for (var item in arg_1) {
            if (arg_1.hasOwnProperty(item)) {
                var copy = arg_1[item];
                if (deepClone && this.isArray(copy)) {
                    arg_0[item] = this.clone(arg_1[item], deepClone);
                }
                else if (deepClone && this.dataType(copy) == ‘object‘) {
                    arg_0[item] = this.clone(arg_1[item], deepClone);
                }
                else if (copy !== undefined) {
                    arg_0[item] = copy;
                }
            }
        }
        return arg_0;
    };

    /**
     * URL解析
     * url  地址
     * */
    utils.getUrlParams = function (url) {
        url = url || window.location.search; //获取url中"?"符后的字串
        var params = {};
        if (url.indexOf("?") != -1) {
            var str = url.split("?")[1];
            var strArr = str.split("&");
            for (var i = 0; i < strArr.length; i++) {
                var tmpArr = strArr[i].split("=");
                params[tmpArr[0]] = decodeURIComponent(tmpArr[1]);
            }
        }
        return params;
    };

    utils.obj2query = function (obj) {
        var __str = "";
        if (typeof obj == "object") {
            var __arr = [];
            for (var item in obj) {
                //modify xuelong .这里不考虑 hasOwnProperty,因为在重庆的盒子上不支持, 所以这里修改成只要是 str 与number 都拼接的模式
                if (typeof obj[item] === "string" || typeof obj[item] === "number") {
                    __arr.push(item + "=" + encodeURIComponent(obj[item]));
                }
            }
            __str = __arr.join("&");
        }
        else if (typeof obj === "string" || typeof obj === "number") {
            __str = obj;
        }

        return __str;
    };

    utils.query2obj = function (url) {
        if (url) {
            if (url.indexOf("?") != -1) {
                return utils.getUrlParams(url);
            }
            else {
                return utils.getUrlParams("?" + url);
            }
        }
    };

    /**
     * 占位符补位方法
     * str 初始字符串
     * num 补位后字符串位数
     * zw 占位符 默认为0
     * */
    utils.addZwToStr = function (str, num, zw) {
        var len = str.length;
        num = num || len;
        zw = zw || 0;
        for (var i = 0, _len = Math.max(0, num - len); i < _len; i++) {
            str = zw + ‘‘ + str;
        }
        return str;
    };

    /**
     * 去字符串前后空格方法
     * str 初始字符串
     * */
    utils.trim = function (str) {
        return str.replace(/(^\s*)|(\s*$)/g, "");
    };

    function getFinalStyle($dom, property) {
        var _this = $dom;
        var s;
        if (window.getComputedStyle) {
            s = window.getComputedStyle(_this, null)[property];
        }
        else {
            s = _this.currentStyle[property];
        }
        return s.replace(/[^0-9.]/g, ‘‘);
    }

    function getText($dom) {
        var s;
        if ($dom.innerText) {
            s = $dom.innerText
        }
        else {
            s = $dom.textContent;
        }
        return s;
    }

    function setText($dom, text) {
        if ($dom.innerText) {
            $dom.innerText = text;
        }
        else {
            $dom.textContent = text;
        }
    }

    /**
     *  字符串截取区分中英文的截取。
     * str 初始字符串
     * */
    utils.ellipsis = function ($dom, num) {
        var _d = $dom;
        var _lineH = getFinalStyle(_d, "lineHeight");
        _lineH == 0 && (_lineH = getFinalStyle(_d, "fontSize") * 1.5);//默认按1.5倍设置行高
        var _h = _lineH * num;
        var str = getText(_d);
        while (_h * 3 < getFinalStyle(_d, "height")) {
            setText(_d, str.substring(0, str.length / 2));
            str = getText(_d);
        }
        while (_h < _d.clientHeight) {
            str = getText(_d);
            setText(_d, str.replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."));
        }
    };

原文地址:https://www.cnblogs.com/yaoyao-sun/p/10284879.html

时间: 2024-10-10 00:53:57

数据类型判断和数据类型转换的相关文章

2018-07-14Java基础+基本数据类型+自动/强制数据类型转换+定义变量+运算符

Java查看版本: CMD内输入:java –version回车! 企业内一般是JDK1.5-->1.7版本! ① J2SE:Java 2 Platform Standard Edition( 2005年之后更名为Java SE )!包含构成Java语言核心的类:比如数据库连接,接口定义,数据结构,输入/输出,网络编程! ② J2EE:Java 2 Platform Enterprise Edition ( 2005年之后更名为Java EE )!Enterprise Edition(企业版)包

java数据类型总结与数据类型转换问题

(1)数据类型总结 java数据类型主要有Boolean.byte.int.short.char.long.float.double. byte类型数据占1个字节,8位,最高位表示符号,则表示范围是:-2^7~2^7-1 int类型数据占4个字节,共32位,最高位表示符号,则表示范围是:-2^31~2^31-1 short类型数据占2个字节,共16位,最高位表示符号,则表示范围是:-2^15~2^15-1 long类型数据占8个字节,共64位,最高位表示符号,则范围是:-2^63~2^63-1

JAVA程序,基本数据类型、、数据类型转换、变量和常量、常用运算符

一.基本数据类型 整数类型:byte.short. int(常用).long(较常用)     定义某个变量          int  a=10: 浮点类型(小数):float.double(常用) 字符类型:char  字符(不是字符串)     char  b='a' 转义字符类:  常用的\\反斜杠字符    \t垂直制表符     \r 回车        \n换行 布尔类型(逻辑类型):  true .false 二.类型转换 强制转换与自动转换 int  m=1  : long n

&lt;java基础&gt;数据类型转换 &lt;5&gt;

类型转换时将一个值从一种类型更改为另一种类型的过程.从低精度数据类型向高精度数据类型转换,则永远不会溢出,并且总是成功的.而把高精度数据类型向低精度数据类型转换则必然会有信息丢失,有可能失败.数据类型转换有两种方式,隐式类型转换和显式类型转换(//./*这两个符号代表注释):隐式类型转换:从低级类型向高级类型的转换,系统将自动执行,程序员无需进行任何操作,这种类型的转换称为隐式转换.当然不包括逻辑类型和字符类型,基本数据类型按精度从低到高排列为byte<short<int<long<

数据类型 数据类型转换 运算符

鉴别空对象看齐能否进行属性操作. 双等会进行隐式类型转换,==两侧数据类型不一样时,会转换成一样的在进行比较. 1 若等号一侧为 布尔值 就都转换成布尔值进行比较. NaN和任何内容比较结果都为false onchange检测内容(在表单中):1 在单选和复选框中,检测checked值是否发生变化(检测是否勾选或取消勾选) 2在其他表单控件中,检测value值发生变化. 3 表单控件(input textareea selecter)要获取他们的值获取的是value. 在js中只有nan类型的数

Objective-C数据类型、数据类型转换

数据类型 1.Objective-C数据类型可以分为:基本数据类型.对象数据类型和id类型. 2.基本数据类型有:int.float.double和char类型. 3.对象类型就是类或协议所声明的指针类型,例如: NSAutoreleasePool *pool ,其中,NSAutoreleasePool是一个类,NSAutoreleasePool *是它指针类型或叫对象类型. 4.id类型可以表示任何类型,一般只是表示对象类型,不表示基本数据类型,所以刚才的变量可以声明pool也可以声明为id

JavaOO视频-04【基本数据类型介绍02、数据类型转换】

转载请标明,http://www.gxabase.com视频内容:此节视频会接着给大家讲基本数据类型的介绍,包括:浮点型.字符型.布尔型.然后再为大家介绍学习八大基本数据类型必须掌握的数据类型转换这一知识点. JavaOO视频-04[基本数据类型介绍02.数据类型转换],布布扣,bubuko.com

JavaScript之基础-3 JavaScript 数据类型、数据类型转换

一.数据类型 数据类型 基本类型 - 数字类型 - 既可以表示32位整数,也可以表示64位的浮点数 - 整数 - 十进制:逢十进一的整数,如1234567890 - 八进制:逢八进一的整数,如01235670 - 十六进制: - 浮点数 - 使用小数点记录数据,如 95.5,3.1415926 - 使用指数记录数据,如 4.3e23, 4.3E-23 string 类型 - 字符串类型 - 表示一系列的文本字符数据,如性别.姓名.住址等 - 由Unicode字符,数字,标点组成的序列 - Jav

数据类型回顾——数据类型转换(显式和隐式)—JS学习笔记2015-6-3(第47天)

对于JS这种语言来说,因为它是一种动态类型语言,变量是没有类型的,可以随时赋予任意值. 但是,数据本身和各种运算是有类型的,因此运算时变量需要转换类型. 大多数情况下,这种数据类型转换是自动的,但是有时也需要手动强制转换. 首先看下强制类型转换(显式) 之前提到的Namber.parseInt.parseFloat 都是强制类型转换: 这里在看阮一峰博客(http://javascript.ruanyifeng.com/grammar/conversion.html#toc1) Number方法