【自制】javascript模拟数据库查询及格式化操作
来源:互联网 发布:淘宝卖家复制宝贝链接 编辑:程序博客网 时间:2024/06/09 14:35
为更好地理解数据库查询的底层操作,本人创建了一个js方法模拟数据库的查询操作,同时模拟对查询到的数据进行格式化的过程
1.模拟数据库查询语句 select * from tablename where * order by *
1.模拟数据库查询语句 select * from tablename where * order by *
2.模拟格式化(血型)bloodtype : 0,1,2,3 对应O, A, B, AB
具体代码如下:
<span style="font-size:14px;"><!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> </head> <body> <script type="text/javascript">//测试数据var db = [{ 'id' : 1, 'name' : 'houcheng', 'sex' : 'male', 'age' : 29, 'bloodtype' : 0 },{ 'id' : 64, 'name' : 'lucy' , 'sex' : 'female', 'age' : 41, 'bloodtype' :2},{ 'id' : 73, 'name' : 'lily' , 'sex' : 'female', 'age' : 50, 'bloodtype' :1},{ 'id' : 2, 'name' : 'liyanan', 'sex' : 'male', 'age' : 18, 'bloodtype' : 3 },{ 'id' : 125, 'name' : 'john' , 'sex' : 'male', 'age' : 4, 'bloodtype' :3}];//1.模拟数据库查询语句 select * from tablename where * order by *// 创建find方法模拟查询语句// 样例,查找db中的id=2和sex=male的记录,以id升序排列,只获取id和name列//find(db, [ 'id', 'name' ], [ { 'id' : '2' }, { 'sex' : 'male' } ], 'id');function find(table,columns,clause,order){var condition=[];var value=[];var returnObj=[];var count=0;var num=0;var result=[];var obj={};var ascResult=[];var ascNum=null;var arrId=[];//遍历clause中条件及值for(var k=0;k<clause.length;k++){for(var h in clause[k]){condition.push(h);value.push(clause[k][h]);}}count=condition.length;//遍历table各属性for(var i=0;i<table.length;i++){for(var j in table[i]){for(var t=0;t<condition.length;t++){if(j==condition[t]&&table[i][j]==value[t]){num++;}}}if(num==count){returnObj.push(table[i]);}num=0;}//只获取id和name列for(var c=0;c<returnObj.length;c++){obj={};for(var d in returnObj[c]){for(var b=0;b<columns.length;b++){if(d==columns[b]){obj[d]=returnObj[c][d];}}}result.push(obj);}//按id升序排列for(var g=0;g<result.length;g++){arrId.push(result[g][order]);}arrId.sort(function(a,b){return a-b;});for(var l=0;l<arrId.length;l++){for(var m=0;m<result.length;m++){if(arrId[l]==result[m][order]){ascResult.push(result[m]);continue;}}}//console.log(arrId);//console.log(ascResult);return ascResult;};//这里是查询测试console.log(find(db,['id','bloodtype'],[{'sex':'male'}],'id'));//格式化,为数组对象的原型添加格式化方法(format)Array.prototype.format = function (attr,fn) {for(var n=0;n<this.length;n++){this[n]['fmt_'+attr]=fn([this[n][attr]]);}return this;//console.log(this);}//这里是格式化血型测试find(db,['id','bloodtype','name'],[{'sex':'male'}],'id').format('bloodtype',function(data){var types=['O','A','B','AB'];return types[data];}); </script> </body></html></span>
1 0
- 【自制】javascript模拟数据库查询及格式化操作
- 数据库 sql xml类型 查询及操作
- Linux基本操作及数据库查询
- C#自制数据库操作类代码
- 数据库中的日期格式化查询
- android: ListView,及数据库操作,模拟实现 联系人功能
- Javascript 日期格式化 相关操作
- JavaScript日期格式化及解析
- php 自制时间格式化
- C#数据库操作模拟
- 模拟数据库操作
- Java时间操作及格式化
- java操作Access数据库(带参数插入及查询)
- mongodb查询语句及mongoose操作数据库总结
- 数据库限定查询语法以及操作及范例
- JAVASCRIPT查询数据库
- ajax +javascript 查询数据库
- 数据库查询操作详解
- Android 颜色对照表
- 把redis安装到ubuntu-14.04.1-server
- url 编码(percentcode 百分号编码)
- Java方法
- VS2008或以上版本的ActiveX控件的测试工具(ActiveX Control Test Container)编译记录
- 【自制】javascript模拟数据库查询及格式化操作
- ZOJ 3713 In 7-bit
- 『大型网站技术架构』(一):架构演化、模式、要素
- 位运算符
- 期望 zoj3929 Deque and Balls
- java类的访问权限
- 康拓展开的应用
- usmart_dev.init(SystemCoreClock/1000000); stm32 战舰的usmart 程序
- 插入排序