localstorage模擬資料庫的簡化版本

2021-08-14 06:57:17 字數 3774 閱讀 6882

使用localstorage模擬乙個資料庫的操作(簡化版本)

localstorage的每一項就是模擬的每一張二維表

目前僅支援cmd規範,vue等前端框架可以自己對下面的**做一些修改.

;(function(window);

//json字串轉化為物件

function _json2obj(jsonstr)

return window.json.parse(jsonstr);

}//json物件轉化為json字串

function _obj2json(obj)

return window.json.stringify(obj);

}//查詢localstorage中有沒有虛擬的表名

function _hastable(tablename) else

}else

}//從localstorage中獲取值

function _getitem(tablename)

}else

}//向localstorage中存入值

function _setitem(tabledata, tablename) else

}else

}//向新增的每乙個欄位中存入其他字段,以備後期操作,如可刪除標記,可更新標記

function _addparams(newobj) else

}else

return result;

}//根據主鍵檢查表中是不是存在重複值

function _uniquecheck(tabledata,options,objdata)

}return result;

}//從乙個物件中提取出指定的字段值,並返回乙個物件

function _getnewobjectfromobject(obj,paramsarr) ;

for(var item in obj)}}

return newobject;

}//檢查主鍵是不是存在於add方法的paramsarr欄位中

function _hasprimarykey(paramsarr,options)

}if(i == paramsarr.length)

return result;

}//檢查add方法中objdata是不是存在paramsarr中的字段

function _hasparamsindataobj(dataobj,paramsarr)

}return result;

}//檢查函式中的引數是否存在

function _checkparam***ist()

}return result;

}var ltable = ,

/***

* @param tablename 模擬**的名稱

* @param dataobj 增加的物件

* @param paramsarr 要新增到表中的字段

*/add:function (tablename,dataobj,paramsarr) else

}else

}else

}else

}else

},/**

** @param tablename 模擬**的名稱

* @param whereobj 刪除條件,如需全部刪除,請傳入空物件

*/delete:function (tablename,whereobj)

if(_hastable(tablename))

}else

}//不可以執行刪除

if(!deleteflag)else

row = null;

deleteflag = true;

}if(deletenum > 0)else

}else

},/**

** @param tablename 模擬**的名稱

* @param whereobj 更新條件

* @param dataobj 更新資料

*/update:function (tablename,dataobj,whereobj)

if(_hastable(tablename))

}else

}//執行更新

if(updateflag)

}tabledata[i] = row;

updatenum++;

}row = null;

updateflag = true;

}if(updatenum > 0)else

}else

},/**

** @param tablename 模擬**的名稱

* @param whereobj 查詢條件

*/select:function (tablename,whereobj)

var result = ;

if(_hastable(tablename))

}else

}if(selectflag)

row = null;

selectflag = true;}}

return result;

},/**

** @param tablename 模擬**的名稱

*/selectall:function (tablename)

var result = ;

if(_hastable(tablename))

return result;

},/**

** @param tablename 模擬**的名稱

* @param whereobj 查詢條件

*/count:function (tablename, whereobj)

var result = 0;

if(_hastable(tablename))

}else

}if(selectflag)

row = null;

selectflag = true;}}

return result;

},/**

** @param tablename 模擬**的名稱

* @param whereobj 查詢條件

* @param countparam 需要count的字段,乙個字串

*/countbyparam:function (tablename, whereobj,countparam)

var result = 0;

if(_hastable(tablename))

}else

}if(selectflag)

row = null;

selectflag = true;}}

return result;

},/**

** @param tablename 模擬**的名稱

*/droptable:function (tablename)

var result = false;

if(_hastable(tablename))else

},/**

** @param tablename 模擬**的名稱

* @returns

*/createtable:function (tablename) }};

/*目前支援cmd規範,seajs*/

if(window.define && window.define.cmd));

}else

})(window);

NOIp模擬 數列

數列 sequence.pas c cpp 問題描述 雖然msh長大了,但她還是很喜歡找點遊戲自娛自樂。有一天,她在紙上寫了一串數字 1,1,2,5,4。接著她擦掉了乙個1,結果發現剩下1,2,4都在自己所在的位置上,即1在第1位,2在第2位,4在第4位。她希望擦掉某些數後,剩下的數列中在自己位置上...

模擬數學 除法

time limit 1000ms memory limit 65536kb submit statistic problem description blue 最近接了個重活,需要幫助小學生手算大量的除法算術題,這可把他累壞了。但是,機智的 blue 一想,寫個 printf f double a...

NOIp模擬 數對

傳送門 很神的dpdp dp題。首先要確定乙個dpdp dp的順序保證答案的正確性。對於兩個元素,分四種情況討論它們的關係 如果a i bjan db i a i leqslant b j and b i a j ai bj and bi 那麼i ii必須排在j jj的前面。如果a i bj and...