-
Notifications
You must be signed in to change notification settings - Fork 0
/
Local-database.js
163 lines (140 loc) · 3.74 KB
/
Local-database.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/**
* database javascript libaray
*
* @description:
* 基于HTML5的localstorage本地数据库,全部数据存放在DB这个字段中,不影响其他本地存储的使用,防止混淆
* 对外提供接口API,方便数据的存储
*
* @author: caichunbao
* @email: [email protected]
* @date: Wed Jan 10 2018 15:51:18 GMT_0800
*
*[功能描述]
* HTML5提供的 window.localStorage 对象,支持以下方法和属性:
* setItem: function(key, value)
* getItem: function(key)
* removeItem: function(key)
* clear: function()
* hasOwnProperty: 检查localStorage上是否保存了变量x,需要传入x
* length: int
* key: function(i) //读取第i个数据的名字或称为键值(从0开始计数)
*
*/
(function(window){
var
// 核心API
ls = window.localStorage,
// 所有的数据的索引
keyArr = ls.getItem("keyArr")===null ? [] : JSON.parse(ls.getItem("keyArr")),
// 版本
localdb_version = "1.0.0",
/**
* 核心函数,包含一些方法和属性
*
* 1.保存本地数据
* 2.获取本地数据
* 3.删除本地数据
* 4.检测是否存在
* 5.清除所有本地数据
* 6....
*
*/
localdb = function(data){
var _this = this;
// 保存本地数据,保存数据索引数组(内部使用)
_this.setItem = function(key,value){
ls.setItem(key,value);
if(keyArr.indexOf(key) === -1){
keyArr.push(key);
ls.setItem("keyArr",JSON.stringify(keyArr))
}
},
// 获取本地数据(内部使用)
_this.getItem = function(key){
return ls.getItem(key);
},
// 删除本地数据,删除数据索引数组(内部使用)
_this.removeItem = function(key){
ls.removeItem(key);
keyArr.removeByValue(key)
ls.setItem("keyArr",JSON.stringify(keyArr))
}
// 检测是否存在(内部使用)
_this.hasItem = function(key){
return ls.hasOwnProperty(key)
}
// 清空本地存储(内部使用)
_this.clear = function(){
ls.clear();
}
};
/**
* 核心函数原型上的属性和方法
*
* [功能]
* 1.对数据进行格式化之后再做操作
* 2.保存本地数据
* 3.获取本地数据
* 4.更新本地数据
* 5.删除本地数据
* 6....
*
*
*/
localdb.prototype = {
constructor: localdb,
// 所有的数组索引数组
getKey: function(){
return JSON.parse(this.getItem("keyArr"))
},
// 返回所有数据
getAllData: function(){
var allData = {};
var allKey = JSON.parse(this.getItem("keyArr")) || [];
for(var i = 0 ; i < allKey.length ; i++){
allData[allKey[i]] = this.getItem(allKey[i])
}
return allData;
},
// 获取本地数据
getData: function(key){
if(this.hasItem(key)){
return JSON.parse(this.getItem(key))
}
},
// 保存本地数据
saveData: function(key,data){
if(!this.hasItem(key)){
this.setItem(key,JSON.stringify(data.data))
}
},
// 更新本地数据
updateData: function(key,data){
if(this.hasItem(key)){
this.setItem(key,JSON.stringify(data.data))
}
},
// 删除本地数据
deleteData: function(key){
if(this.hasItem(key)){
this.removeItem(key);
}
}
};
/**
* 给数组添加一个系统方法
* 删除指定的值
*
* @param val
*/
Array.prototype.removeByValue = function(val) {
for(var i=0; i<this.length; i++) {
if(this[i] == val) {
this.splice(i, 1);
break;
}
}
}
// 对外提供接口
window.localdb = new localdb();
})(window)