js本地存儲可以一次多對鍵嗎
⑴ jquery 本地存儲大量數據,並支持後續操作的方法!
你的數據有多大?幾千行的話 gzip 一下也不會花超過幾秒(大概不需要),不需要甚麼特別的處理。再大的話就視乎實際數量和所需的處理方式,簡單的 localstorage 復雜的自己看看是用自己的方法處理(一般較快較省記憶)還是去用 js 實作的資料庫(一般較方便)。這也是個編程階段,自己多試試看不同的處理方法那才會有長進,別人給的意見再好都不是你自己的經驗。
⑵ javascript cookie一次存儲多個名/值對,可以使用分號加空格(; )隔開,實現不了
設置cookie的時候,各值之間不能存在空格,你改成
document.cookie=」userId=828;userName=hulk」;(分號後是沒有空格的)
⑶ 怎麼用js實現把數據存儲到本地
可以用localstorge或者是瀏覽器本地資料庫,這對瀏覽器有要求,低版本的IE是不支持的
⑷ JavaScript對數組存儲容量有限制嗎
Javascript自身提供了一些操作,可以對數組實現一定的處理,例如排序、連接、堆棧等等,下面做一下簡單的介紹。
1,concat(arrayName2, arrayName3, …, arrayNameN) ,將數組本身和另外一個或多個數組進行連接,例如:
var arr1=[」a」,」c」];
var arr2=[」b」,」d」];
var arr22=[」e」,」f」];
var arr3=arr1.concat(arr2,arr22);
document.write(arr3);//結果顯示為:a,c,b,d,e,f
2,join(separator),通過間隔符將數字連接為字元串,例如:
var arr1=[」a」,」b」,」c」,」d」,」e」];
var arr1Str=arr1.join(」-」);
document.write(arr1Str);//結果顯示為:a-b-c-d-e
3,pop()/push(element1, …, elementN) ,實現了堆棧的操作,push是入棧,pop是出棧,例如:
var arr1=[」a」,」b」];
arr1.push(」c」,」d」);
document.write(arr1);//結果為:a,b,c,d
var value=arr1.pop();
document.write(value);//結果為:d
4,reverse() ,將數組反向排序,例如:
var arr1=[」a」,」b」,」c」];
arr1.reverse();
document.write(arr1);//結果為:c,b,a
5,sort(compareFunction),按照指定的排序規則進行排序,如果參數為空,則按照默認的字母和數字進行排序,例如:
function mySort(o1,o2){
if(o1.length>o2){
return 1;
}
return -1;
}
var arr1=[」a」,」c」,」bd」];
arr1.sort();
document.write(arr1);//結果為:a,bd,c
arr1.sort(mySort);
document.write(arr1);//結果為:bd,c,a
6,shift() /unshift,將數組的第一個值取出(或者將值插入到數組第一個位置),並且數組長度縮短(加長),例如:
var arr1=[」a」,」b」,」c」];
var value=arr1.shift();
document.write(value);//輸出為:a
document.write(arr1);//輸出為:b,c
var value2=arr1.unshift(」g」);
document.write(value);//IE輸出為undefined,Firefox輸出為3
document.write(arr1);//輸出為:g,b,c
7,slice(begin[,end]) ,類似字元串的substring方法,就是截取數組,例如:
var arr1=[」a」,」b」,」c」];
var arr2=arr1.slice(0,2);
document.write(arr2);//輸出為:a,b
8,splice(index, howMany, [element1][, …, elementN]) ,從指定的位置(index)開始,刪除後面多個(howMany)數組的值,並從刪除處開始依次插入新的值,例如:
var arr1=[」a」,」b」,」c」];
arr1.splice(1,1,」m」,」n」,」o」);
document.write(arr1);//輸出為:a,m,n,o,c
應該說,Javascript本身對數組提供的操作能力,還是不錯的,但是在實際應用中,我們需要對數組做更多的操作,例如Java、PHP、.NET中對數組都提供了強大的操作能力,而且許多優秀的開源項目中,也提供了對數組的許多操作,但是Javascript這方面還需要進一步加強。
為了對數組提供更多的操作,JsJava定義了許多類,來加強對數組的操作,介紹如下:
1,jsjava.util.Arrays類,仿照Java的Arrays類,對數組提供了一些高效的操作,例如:
var list=Arrays.asList([」a」,」b」,」c」]);//通過數組創建一個不可變的列表
而且通過binarySearch,提供了二分法搜索的一個實現,其它的請參考JsJavaDoc
2,jsorg.apache.commons.lang.ArrayUtils類,該類的實現是參考Apache優秀的commons-lang開源項目實現的,實現其中的所有功能,例如對數組進行插入、刪除、搜索、填充、截取等等,例如:
var arr=ArrayUtils.clone([0,1,2,9,0]);
document.write(arr+」<br>」);
document.write(ArrayUtils.subarray(arr,0,3)+」<br>」);
arr.reverse();
document.write(arr);
顯示結果為:
0,1,2,9,0
0,1,2
0,9,2,1,0
3,jsorg.eob.lang.MultiDimensionArrayUtils類,該類實現了對多維數組的創建支持,例如可以方便創建二維和三維數組,具體可以參考文章《在Javascript之中如何創建多維數組》
4,org.apache.commons.math.linear.RealMatrixImpl類,實現對矩陣的操作,矩陣實際上就是多維數組,即實現了對多維數組的支持,例如可以實現多維數組的加、減、乘、除等操作,還有數學運算中對矩陣的其它操作,具體可以參考JsJavaDoc。
JsJava是對Javascript語言最好的擴展和延伸,它與目前流行的prototype.js的方向是不一樣的,如果你正在構建web應用,那麼JsJava將是你界面應用最好的支撐。
⑸ js本地存儲可以一次存多對鍵名鍵值對嗎
一般將多個鍵值對使用JSON序列化為一個JSON字元串
然後用一個鍵值對的方式存儲更好
例如想要存a=1,b=2,c=3不用存三次
是需要將其序列化為{"a":1,"b":2,"c":3}然後存上
⑹ html5 本地存儲有多少種方案
html5 本地存儲有五種方案。
1、LocalStorage
LocalStorage就是Key-Value的簡單鍵值對存儲結構,Web Storage除了localStorage的持久性存儲外,還有針對本次回話的sessionStorage方式,一般情況下localStorage較為常用,示例代碼如下:
function save(dataModel){
var value = dataModel.serialize();
window.localStorage['DataModel'] = value;
window.localStorage['DataCount'] = dataModel.size();
console.log(dataModel.size() + ' datas are saved');
return value;
}
function restore(dataModel){
var value = window.localStorage['DataModel'];
if(value){
dataModel.deserialize(value);
console.log(window.localStorage['DataCount'] + ' datas are restored');
return value;
}
return '';
}
function clear(){
if(window.localStorage['DataModel']){
console.log(window.localStorage['DataCount'] + ' datas are cleared');
delete window.localStorage['DataModel'];
delete window.localStorage['DataCount'];
}
}
2、Cookie
這種存儲方式存儲內容很有限,只適合做簡單信息存儲,存取介面設計得極其反人類,舉例如下:
function getCookieValue(name) {
if (document.cookie.length > 0) {
var start = document.cookie.indexOf(name + "=");
if (start !== -1) {
start = start + name.length + 1;
var end = document.cookie.indexOf(";", start);
if (end === -1){
end = document.cookie.length;
}
return unescape(document.cookie.substring(start, end));
}
}
return '';
}
function save(dataModel) {
var value = dataModel.serialize();
document.cookie = 'DataModel=' + escape(value);
document.cookie = 'DataCount=' + dataModel.size();
console.log(dataModel.size() + ' datas are saved');
return value;
}
3、Indexed Database API
IndexedDB可以存儲結構對象,可構建key和index的索引方式查找,目前各瀏覽器的已經逐漸支持IndexedDB的存儲方式,其使用代碼如下,需注意IndexedDB的很多操作介面類似NodeJS的非同步回調方式,特別是查詢時連cursor的continue都是非同步再次回調onsuccess函數的操作方式,因此和NodeJS一樣使用上不如同步的代碼容易。
function save(dataModel){
var tx = db.transaction("meters", "readwrite");
var store = tx.objectStore("meters");
dataModel.each(function(data){
store.put({
id: data.getId(),
tag: data.getTag(),
name: data.getName(),
meterValue: data.a('meter.value'),
meterAngle: data.a('meter.angle'),
p3: data.p3(),
r3: data.r3(),
s3: data.s3()
});
});
tx.oncomplete = function() {
console.log(dataModel.size() + ' datas are saved');
};
return dataModel.serialize();
}
4、FileSystem API
FileSystem API相當於操作本地文件的存儲方式,目前支持瀏覽器不多,其介面標准也在發展制定變化中,因此也可以動態生成圖片到本地文件,然後通過 filesystem:http:*** 的URL方式直接賦值給img的html元素的src訪問。
function save(dataModel) {
var value = dataModel.serialize();
fs.root.getFile('meters.txt', {create: true}, function (fileEntry) {
console.log(fileEntry.toURL());
fileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function () {
console.log(dataModel.size() + ' datas are saved');
};
var blob = new Blob([value], {type: 'text/plain'});
fileWriter.write(blob);
});
});
return value;
}
5、Application Cache
window.applicationCache 對象是對瀏覽器的應用緩存的編程訪問方式。其 status 屬性可用於查看緩存的當前狀態:
var appCache = window.applicationCache;
switch (appCache.status) {
case appCache.UNCACHED: // UNCACHED == 0
return 'UNCACHED';
break;
case appCache.IDLE: // IDLE == 1
return 'IDLE';
break;
case appCache.CHECKING: // CHECKING == 2
return 'CHECKING';
break;
case appCache.DOWNLOADING: // DOWNLOADING == 3
return 'DOWNLOADING';
break;
case appCache.UPDATEREADY: // UPDATEREADY == 4
return 'UPDATEREADY';
break;
case appCache.OBSOLETE: // OBSOLETE == 5
return 'OBSOLETE';
break;
default:
return 'UKNOWN CACHE STATUS';
break;
};
⑺ js記錄點擊某個按鈕次數並存儲到xml或者txt文本,並可以讀取點擊的記錄(考慮多個人點擊)
<input type='button' value='點擊' onclick='clickCount()' />
<input type='button' value='查看當前用戶點擊次數' onclick='clickShow()' />
function clickCount(){
var UserName = <%=Session["UserName"]%> //aspx頁面
var UserInfo = xmlDoc.createElement("UserInfo");
UserInfo.setAttribute("name", UserName);
}
function clickShow(){
var clickCount = 0;
var xmlDoc = loadXml("TEST.xml");
for(var i = 0;i<xmlDoc.getElementsByTagName("UserInfo").length; i ++) {
var UserInfo = xmlDoc.getElementsByTagName("UserInfo")[i];
var UserName = UserInfo.getAttribute("UserName");
if(UserName == <%=Session["UserName"]%>){clickCount++;}
}
alert("您點擊了"+clickCount);
}
function loadXml (xmlFileName) {
var xmlFile = xmlFIleName;
if (window.ActiveXObject) {
//IE
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.load(xmlFile);
}
else if (document.implementation && document.implementation.createDocument) {
//其他瀏覽器
xmlDoc = document.implementation.createDocument('', '', null);
xmlDoc.load(xmlFile);
}
else {
xmlDoc = null;
}
return xmlDoc;
}
//沒測試過 你試試看
⑻ js 編程需存儲大量數據,有什麼好的方法
1、Cookies。這個不說了,容量小,還有性能問題。
2、localStorage、sessionStorage,IE8+才支持,容量一般在5MB左右。
3、WebSQL,IE不支持。好處是結構跟關系型資料庫一樣,而且沒有容量限制;缺點是慢。
4、IndexDB,IE10+才支持,已被廢棄的一種特性(廢棄的意思是你可以繼續使用,但是瀏覽器廠商已經不再維護這個特性了,即使有BUG也沒人管了)。
⑼ JavaScript對象裡面有幾個鍵值對
6個