美文网首页
增删查改-v1.0.0

增删查改-v1.0.0

作者: 一点金光 | 来源:发表于2019-07-28 00:53 被阅读0次

对数据进行增删查改操作。这是一种风格,但不唯一。此处侧重于函数编程。

//CURD-C-增加
function addNs(nsObj, nsStr) {
    var parts = nsStr.split("."),
        parent = nsObj;
    parts.forEach(function(val, key, arr) {
        if(typeof parent[val] === "undefined") parent[val] = {};
        parent = parent[val];
    });
    return parent;
}
//usage:
addNs({},'state.user.id')

//CURD-R-读取
function getNsVal(nsObj, nsStr, def) {
    var result = nsObj || {};
    (nsStr || '').split('.').forEach(function(key) {
        if(key && (typeof result !== 'undefined')) {
            result = result[key];
        }
    });
    // 未定义:默认取值
    if(typeof result === 'undefined') {
        return def;
    }
    // 已定义已有取值
    else {
        return result;
    }
}
//usage:
getNsVal({},'state.user.id','ymc')
getNsVal({},'state.user.id')

//CURD-U-更新
function setNsVal(nsObj, path, value) {
    if(typeof value === 'undefined') {
        nsObj = path;
    }
    // 
    else {
        path = String(path || '').trim();
        if(path) {
            var paths = path.split('.'),
                last = paths.pop(),
                data = nsObj || {};
            // 获取上一级命名空间取值
            paths.forEach(function(key) {
                var type = typeof data[key];
                // 获取
                if(type === 'object') {
                    data = data[key];
                }
                // 
                else if(type === 'undefined') {
                    data = data[key] = {};
                }
                // 出错
                else {
                    console.log('forbidden to set property[' + key + '] of [' + type + '] data');
                }
            });
            // 设置属性取值
            data[last] = value;
        }
    }
    return this;
}
//usage:
setNsVal({},'state.user.id','ymc')
setNsVal({},'state.user.id')

//CURD-D-删除
function delNsVal(nsObj, path) {
    var data, //数据作用域
        last, //最后一级命名空间
        paths, //
        key,
        res;

    // 字符串化
    path = String(path || '').trim();
    if(!path) return res = false;

    paths = path.split('.');
    data = nsObj;
    last = paths.pop();

    // 获取上级
    for(var i = 0, len = paths.length; i < len; i++) {
        key = paths[i];
        // 存在取值时:
        if(typeof data[key] === 'object') {
            data = data[key];
        }
        // 没有取值时:返回
        else {
            return res = false;
        }
    }

    // 删除
    if(typeof data[last] !== 'undefined') {
        delete data[last];
        return res = true;
    }
    return res = false;
}
//usage:
delNsVal({},'state.user.id')

//合并对象-覆盖模式
function mergeObj() {
    // 存储参数
    var args = arguments;
    if(args.length < 2) return;

    // 复制对象
    var temp = cloneObj(args[0]);
    // 合并对象
    for(var n = 1; n < args.length; n++) {
        for(var i in args[n]) {
            // 普通模式
            //if(args[n].hasOwnProperty(i) && (!temp.hasOwnProperty(i))) temp[i] = args[n][i];
            // 覆盖模式
            if(args[n].hasOwnProperty(i)) {
                temp[i] = args[n][i];
            }
        }
    }
    return temp;
}

//复制对象-深复制
function cloneObj(oldObj) {
    if(typeof(oldObj) != 'object') return oldObj;
    if(oldObj == null) return oldObj;

    var newObj = {};
    for(var i in oldObj) {
        newObj[i] = cloneObj(oldObj[i]);
    }
    return newObj;
}

相关文章

  • 增删查改-v1.0.0

    对数据进行增删查改操作。这是一种风格,但不唯一。此处侧重于函数编程。

  • configparser配置文件模块

    Menu configparser定义 创建configparser文件 增删改查 - 查 增删改查 - 改 增删...

  • Arraylist和Linkedlist

    Arraylist:底层是数组结构,增删慢改查快. Linkedlist:底层是链表结构,增删快 改查慢. Arr...

  • Spring Boot——增删查改(1)

    Spring Boot增删查改 标签: SpringBoot 增删查改是最为基础的功能,在很多场景下都有运用。本文...

  • Java集合之ArrayList - 吃透增删查改

    Java集合之ArrayList - 吃透增删查改 从源码看初始化以及增删查改,学习ArrayList。 先来看下...

  • ElasticSearch常用的增删查改操作

    使用Java对ElasticSearch增删查改操作,分为两个步骤:1.拼接sql语句2.执行增删查改操作以下提供...

  • NSQL增删查改

    无论前端还是后台,都离不开对数据库的一些基本操作,我们现在分享一下数据库的一些基本语法: 修改表 修改表 语法: ...

  • mongoDB增删查改

    一、 数据库使用开启 mongodb 服务:要管理数据库,必须先开启服务,开启服务使用 mongod --dbpa...

  • 一个小小的留言本

    需求分析:用户可以在留言本留言,并对内容进行增删查改。 涉及知识点: PHP语言 数据库的增删查改 留言页面 wr...

  • DartVM服务器开发(第十五天)--Jaguar_ORM一对一

    DartVM服务器开发(第十四天)--Jaguar_ORM增删查改 上一篇文章中讲解了如何使用数据库中的增删查改,...

网友评论

      本文标题:增删查改-v1.0.0

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