美文网首页
前端常用Utils工具函数库合集

前端常用Utils工具函数库合集

作者: 用技术改变世界 | 来源:发表于2020-04-01 13:33 被阅读0次

    常用计算库:https://mikemcl.github.io/decimal.js/#toFixed

     /**

         * 把树型数据的node组成一个数组

         * @param node

         */

        static getTreeNodeArr(node: any, tempArr: Array<any>) {

            tempArr.push(node);

            if (node && node.parent && node.parent.children) {

                // 简化结构(解决无限递归parent)

                let chilArr = node.parent.children;

                for (let k = 0; k < chilArr.length; k++) {

                    const eleChil = chilArr[k];

                    eleChil.parent = {};

                }

                node.parent.children = [];

            }

            if (node && node.children && node.children.length > 0) {

                for (let i = 0; i < node.children.length; i++) {

                    const element = node.children[i];

                    this.getTreeNodeArr(element, tempArr);

                }

            }

            return tempArr;

        }

        static toJson(str: any) {

            try {

                if (str && typeof str === 'string') {

                    return JSON.parse(str);

                } else {

                    console.log(typeof str, 'troJson error');

                }

            } catch (error) {

                console.log(error);

            }

        }

        static simpleDeepClone(initalObj: object) {

            return Utils.toJson(JSON.stringify(initalObj));

        }

        // 拷贝对象数组

        static copyObjArray(fromItem) {

            let toItem = [];

            for (let obj of fromItem) {

                let newObj = {};

                for (let key of Object.keys(obj)) {

                    newObj[key] = obj[key];

                }

                toItem.push(newObj);

            }

            return toItem;

        }

        /**

         * 拷贝对象  将fromObj的属性值copy到toObj中(toObj中没有对应的值才拷贝,有的话就不拷贝)

         * 用于修改和添加对象时候的对象赋值

         */

        static copyObj(toObj, fromObj) {

            console.log(Object.keys(fromObj));

            for (let key of Object.keys(fromObj)) {

                if (fromObj.hasOwnProperty(key) && fromObj[key]) {

                    toObj[key] = fromObj[key];

                }

            }

            return toObj;

        }

        /**

         * 拷贝对象  将fromObj的所有属性值copy到toObj中

         *

         */

        static copyObjAll(toObj, fromObj) {

            console.log(Object.keys(fromObj));

            for (let key of Object.keys(fromObj)) {

                toObj[key] = fromObj[key];

            }

            return toObj;

        }

        static deepClone(initalObj) {

            let obj = {};

            for (let key in initalObj) {

                if (initalObj.hasOwnProperty(key)) {

                    let prop = initalObj[key];

                    // 避免相互引用对象导致死循环,如initalObj.a = initalObj的情况

                    if (prop === obj) {

                        continue;

                    }

                    if (typeof prop === 'object') {

                        obj[key] = (prop.constructor === Array) ? [] : Object.create(prop);

                    } else {

                        obj[key] = prop;

                    }

                }

            }

            return obj;

        }

    相关文章

      网友评论

          本文标题:前端常用Utils工具函数库合集

          本文链接:https://www.haomeiwen.com/subject/ocnouhtx.html