JSON的操作與使用
JSON也就是JavaScript Object Notation,是一個描述數據的輕量級語法。JSON的優雅是因為它是JavaScript語言的一個子集。JSON和XML都使用結構化方法描述數據
JSON有結構化的嵌套數據元素,每個JSON文檔描述了這樣一個對象,該對象包含有:嵌套對象、數組、字符串、數字、布爾值或空值。
JSON 元素的添加刪除
創建對象的三種形式:
第一種:
var Person=new Object();
Person.name="Sun";
Person.age=24;
第二種:
var Person=new Object();
Person["name"]="Sun";
Person["age"]=24;
第三種:對象字麵量表達式
var Person={
name: "Sun",
age: 24
}
JSON 元素的添加刪除
javasscript刪除數組的3種方法
1,shift()方法
shift:刪除原數組第一項,並返回刪除元素的值;如果數組為空則返回undefined
var chaomao=[1,2,3,4,5]
var chaomao.shift()//得到1
alert(chaomao)//[2,3,4,5]
2,pop()方法
pop:刪除原數組最後一項,並返回刪除元素的值;如果數組為空則返回undefined
var chaomao=[1,2,3,4,5]
var chaomao.pop()//得到5
alert(chaomao)//[1,2,3,4]
前麵的方法隻能操作數組開頭和結尾,無法操作中間項,如果要操作中間的項,使用splice方法
3,splice方法
這個方法很強大,可以對數組任意項進行增加,刪除,替換操作
1)修改操作:
var chaomao=[1,2,3,4,5]
chaomao.splice(2,1,8,9)
alert(chaomao)//1,2,8,9,4,5
第一個參數是準備操作的數組位置,第二個參數是操作位置後麵的數組項數,第三個以後的就是被替換後的內容
2)刪除操作:
var chaomao=[1,2,3,4,5]
chaomao.splice(2,1)
alert(chaomao)//1,2,4,5
3)添加操作:
var chaomao=[1,2,3,4,5]
chaomao.splice(2,0,8,9)
alert(chaomao)//1,2,8,9,3,4,5
javasscript刪除對象的方法
js中刪除對象元素用delete操作符
var p ={
"name": “chaomao”,
"age":45,
"sex":"male"
};
delete p.name
for(var i in p){
console.log(i);//輸出age,sex,name項已經被刪除了
}
添加json元素的方法
var json = {}; // 如果json已經定義就跳過
json[text] = value;
json.text2 = value2; // 此時text2必須符合變量名標準,否則得使用數組方式賦值
JSON數據遍曆
JSON數據如:
{"options":
"[
{/"text/":/"王家灣/",/"value/":/"9/"},
{/"text/":/"李家灣/",/"value/":/"10/"},
{/"text/":/"邵家灣/",/"value/":/"13/"}
]",
"[
{/"text/":/"王家灣/",/"value/":/"8/"},
{/"text/":/"李家灣/",/"value/":/"6/"},
{/"text/":/"邵家灣/",/"value/":/"12/"}
]"
}
json數據的列循環for
var len = options.length;
for (var i = 0; i < len; i++){
for (obj in options[i]){
var obj2 = obj;
}
}
JSON數據遍曆之for-in
object本身就是無對象的集合,因此在用 for-in 語句遍曆對象的屬性時,遍曆出的屬性順序與對象定義時不同,因此在開發中應盡量避免編寫依賴對象屬性順序的代碼
javascript數組遍曆for與for in區別詳解
var array = ['a']
for (var i = 1; i < array.length; i++) {//標準的for循環
alert(array[i])
}
for (var i in array) {//forin循環
alert(array[i])
}
正常情況下上麵兩種遍曆數組的方式結果一樣
區別:
1.標準的for循環中的i是number類型,表示的是數組的下標,但是forin循環中的i表示的是數組的key是string類型,因為js中一切皆為對象。自己試試 alert(typeof i)
2.現在我加上如下代碼,上麵的執行結果就不一樣了
Array.prototype.test=function(){}//擴展了js原生的Array
我們發現標準的for循環依然真正的對數組循環, 但是此時forin循環對我剛才寫的test方法打印出來了。這就是for與forin遍曆數組的最大區別,如果我們在項目采用的是用forin遍曆數組,假設有一天誰不小心自己為了擴展js原生的Array類,或者引入一個外部的js框架也擴展了原生Array。那問題就來了
再此建議兩點
1.不要用for in遍曆數組,全部統一采用標準的for循環變量數組(我們無法保證我們引入的js是否會采用prototype擴展原生的Array)
2.如果要對js的原生類擴展的時候,不要采用prototype了
JS遍曆Json字符串遍曆讀取鍵值對
for(var str in obj){
alert(str+'='+obj[str]);
}
直接在JS裏創建JSON數據然後遍曆使用
直接在JS裏創建JSON數據
var YearSelect = {};
var Year = 2014;
var DateOption;
for (var i = Year; i < Year + 12; i++) {
DateOption = {'Year':i, 'Month':i-Year+1};
// alert(DateOption.Year)
YearSelect[i] = DateOption;
}
json對象沒有length屬性,所以遍曆的話要:
for(var key in YearSelect){
alert(YearSelect[key].Year);
alert(YearSelect[key].Month);
}
記住一定要分辨好json的對象和數組~不然就一直是undenfined
js 遍曆json返回的map內容示例代碼
JS不能直接遍曆Map,但是可以遍曆JSON對象,所以先將Map轉為JSON數據,再由JS去解析遍曆JSON對象,就達到了間接遍曆Map的目的
var proIdArray = new Array();
var proNameArray = new Array();
// Deal with the project names.
var theProjectsObj = JSON.parse(result.data["projectIdsNames"]);
for (var proId in theProjectsObj) {
proNameArray.push(theProjectsObj[proId]);
proIdArray.push(proId);
}
最後更新:2017-05-17 12:32:29