npm checkobj 模块

简介:

函数检验

安装

$ npm install checkobj

总览

var checkObj=require("checkobj").checkObj;
checkObj(obj,checker)//支数组,对象,字符串、

var gen_checker=require("checkobj").gen_checker;// 生成校验器
gen_checker(obj)// 自动生成校验器

多级别校验

dat={a:20,b:"asdhasud",c:{a:20,b:"asdhasud"}};
生成的校验器: {"a":"number","b":"string","c":{"a":"number","b":"string"}}
   注意 所有的校验器和元素具有一样的树结构;

注意 所有的校验器和元素具有一样的树结构;

函数式校验

//对于对象{a:val} 校验器为:{a:function(val,key){ }}  
//回调参数为(val,"a") //值和键
var result=checkObj([4,3,2,1],[function (val,key) {// 逆序检测
    console.log("依次检测"+val+":"+key);
    return val+key===4
}]);
console.log("[4,3,2,1] 函数检验"+result);

该功能检测到的每个数组的值和键 ,并检测是不是值和键 总值为4;;

 var a={"a":2,"b":[3,6,9]};
var checkFunc = {
    a: function (val) {
        return val % 2 === 0;
    }, b: [
        function (val) {
            return val % 3 === 0;
        }
    ]
};

console.log(JSON.stringify(a)+":"+checkObj(a,checkFunc));// true  函数 检测 数据
console.log(JSON.stringify(a.b)+":"+checkObj(a.b,checkFunc.b));// true 函数 检测 数据

数组校验

检测整个数组是不是都为 数值
console.log([3,7,8]+":"+checkObj([3,7,8],["number"]));// true 数组 ,检测器为数组

其他例子

var checker = {
    "a": "undefined", "b": "number",c:""
};
var checker1 = {
    "a": "undefined", "b": "number",c:"",d:{
        "a": "undefined", "b": "number",c:""
    }
};


console.log("空字符串匹配任意类型:"+checkObj({a:"555",b:555,c:undefined},checker));//待改

console.log("不允许扩展属性:"+checkObj({a:undefined,b:555,c:"test String",d:{a:undefined,b:555,c:"num"}},checker));

console.log("多级属性, 扩展:"+checkObj({a:undefined,b:555,c:"test String",d:{a:undefined,b:555,c:"num"}},checker1));//true

console.log("空字符串匹配任意类型:"+checkObj({a:undefined,b:555,c:"test String"},checker));
//true
console.log("undefined 的不允许设置智:"+checkObj({a:555,b:"555",c:undefined},checker));//falase

console.log("检测val,key 函数检测器");

自动生成校验器

var dat=[{a:20,b:"asdhasud"},{a:20,b:"asdhasud"},{a:20,b:"asdhasud"}];
console.log(gen_checker(dat));

生成校验器: [{"a":"number","b":"string"}]

 dat={a:20,b:"asdhasud",c:{a:20,b:"asdhasud"}};
console.log(gen_checker(dat));//{ a: 'number', b: 'string', c: { a: 'number', b: 'string' } }

生成校验器: {"a":"number","b":"string","c":{"a":"number","b":"string"}}

var dat=[{a:20,b:"asdhasud"},{a:20,b:"asdhasud"},{a:20,b:"asdhasud"}];
console.log(gen_checker(dat));  //  [ { a: 'number', b: 'string' } ]

生成校验器:[ { a: 'number', b: 'string' } ]

目录
相关文章
|
6月前
|
JavaScript 前端开发
介绍npm模块的安装机制,为什么输入npm install 就可以自动安装对应的模块?如何初始化?
介绍npm模块的安装机制,为什么输入npm install 就可以自动安装对应的模块?如何初始化?
93 0
|
6月前
|
JavaScript 前端开发 开发工具
npm 包和模块简介
npm 包和模块简介
|
JavaScript
vue踩坑记-在项目中安装依赖模块npm install报错
vue踩坑记-在项目中安装依赖模块npm install报错
96 0
|
JavaScript 前端开发
npm模块的安装机制
npm模块的安装机制
96 0
|
资源调度 JavaScript 前端开发
我的学习方法是每天看 10 个 NPM 模块?
最近看到阿里前端技术专家狼叔在 17 年的这篇《迷茫时学习 Node.js 最好的方法》[1]提到: 今天小弟过来找我,说迷茫,我告诉他一个密法:一天看 10 个 npm 模块,坚持一年就是 3000+,按正常工作需要,超过 200 个都很厉害了。
|
前端开发 JavaScript 程序员
CommonJs自定义模块的使用/npm 包 第三方模块/package.json版本信息
CommonJs自定义模块的使用/npm 包 第三方模块/package.json版本信息
132 0
CommonJs自定义模块的使用/npm 包 第三方模块/package.json版本信息
|
JavaScript
记录下npm 发布模块
npm login npm whoami 查找自己的用户名 npm init npm publish 更新的话在package.json中更改版本号再次发布 删除发布 npm -- force unpublish ...
1471 0
谈谈webpack对npm模块导入的解析
问题描述 在一次运营后台的常规更新时,发现有一个外部依赖包不能正常工作。经排查发现,react-split-pane在前几天发了一个新版0.1.81,该版本同时提供commonjs和es module两种包导入方式:   原来我们采用的CMD写法 const ReactSplitPane = require('react-split-pane') 失效了。 
1697 0