SON對(duì)象是什么?
JSON代表JavaScript對(duì)象表示法,是一種基于JavaScript對(duì)象語(yǔ)法的結(jié)構(gòu)化數(shù)據(jù)的標(biāo)準(zhǔn)文本格式。JSON僅定義了兩種數(shù)據(jù)結(jié)構(gòu):對(duì)象和數(shù)組。JSON對(duì)象是由花括號(hào)括起來(lái)的鍵/值對(duì)組成的數(shù)據(jù)類(lèi)型。JSON數(shù)組是值的列表。當(dāng)數(shù)據(jù)從服務(wù)器發(fā)送到網(wǎng)頁(yè)或數(shù)據(jù)存儲(chǔ)在文件或數(shù)據(jù)庫(kù)中時(shí),通常會(huì)使用JSON對(duì)象。JSON與JavaScript對(duì)象文字語(yǔ)法非常相似,但可以獨(dú)立于JavaScript使用。許多編程環(huán)境支持讀取和生成JSON。
JSON對(duì)象的特點(diǎn)
JSON提供了幾個(gè)優(yōu)點(diǎn),使其成為表示結(jié)構(gòu)化數(shù)據(jù)的流行選擇:
JSON對(duì)象示例
基本JSON對(duì)象:{"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null} |
嵌套JSON對(duì)象:這是一種由名稱(chēng)/值對(duì)列表組成的數(shù)據(jù)類(lèi)型,其中一個(gè)或多個(gè)值是另一個(gè)JSON對(duì)象。{"person": {"name": "Natalie", "age": 21}, "address": {"street": "123 XYZ Street", "City": "New York", "State" : "NY", "zip": "10001"}} |
JSON對(duì)象數(shù)組:[ { "name": "Natalie", "age": 21 }, { "name": "David", "age": 37 }, { "name": "Mark", "age": 43 } ] |
解析JSON對(duì)象
解析是將JSON對(duì)象轉(zhuǎn)換為本機(jī)JavaScript對(duì)象的方法。
JSON.parse()方法:JSON.parse()方法解析字符串并返回一個(gè)JavaScript對(duì)象。字符串必須是JSON格式。
語(yǔ)法:JSON.parse(string, function)
參數(shù) | 必需/可選 | 描述 |
字符串 | 必需 | 以JSON格式編寫(xiě)的字符串 |
Reviver函數(shù) | 可選 | 一個(gè)接受鍵和值作為參數(shù)并返回修改后的值或undefined以刪除屬性的函數(shù)。對(duì)每個(gè)項(xiàng)目調(diào)用該函數(shù)。任何嵌套對(duì)象在父對(duì)象之前轉(zhuǎn)換。 |
示例
var text='{"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null}';
var obj=JSON.parse(text, function (key, value) {
if (key==="name") {
return value.toUpperCase();
} else {
return value;
}
});
console.log(obj);
輸出
{
name: 'NATALIE',
married: false,
age: 21,
city: 'New York',
zip: '10001',
awards: null
}
JSON.stringify()方法
該方法將JavaScript對(duì)象轉(zhuǎn)換為字符串。在將數(shù)據(jù)發(fā)送到Web服務(wù)器時(shí),數(shù)據(jù)必須是字符串。JSON.stringify()也適用于數(shù)組。
語(yǔ)法:JSON.stringify(obj, replacer, space)
參數(shù) | 必需/可選 | 描述 |
Obj | 必需 | 要轉(zhuǎn)換為字符串的值 |
Replacer | 可選 | 用于轉(zhuǎn)換結(jié)果的函數(shù)或數(shù)組。對(duì)每個(gè)項(xiàng)目調(diào)用replacer。 |
Space | 可選 | 用作空格的字符串(最多10個(gè)字符)或數(shù)字,從0到10,表示要用作空格的空格字符數(shù)。 |
示例
var obj={"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
var text=JSON.stringify(obj, function (key, value) {
if (key==="name") {
return value.toUpperCase();
} else {
return value;
}
});
console.log(text);
輸出
{"name":"NATALIE","married":false,"age":21,"city":"New York","zip":"10001","awards":null}
/*為每個(gè)空格插入單詞SPACE:*/
var newText=JSON.stringify(obj, null, "space");
console.log(“Text with the word space “+ newText);
輸出
Text with the word space {
space"name": "Natalie",
space"married": false,
space"age": 21,
space"city": "New York",
space"zip": "10001",
space"awards": null
}
JSON對(duì)象導(dǎo)航
可以使用點(diǎn)(.)或方括號(hào)([])表示法導(dǎo)航到其屬性并訪(fǎng)問(wèn)它們的值。
// 使用點(diǎn)表示法訪(fǎng)問(wèn)名稱(chēng)
var obj={"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
console.log(obj.name); 輸出:Natalie
// 使用點(diǎn)表示法訪(fǎng)問(wèn)城市
console.log(obj["city"]; 輸出:New York
var obj_array=[ { "name": "Natalie", "age": 21 }, { "name": "David", "age": 37 }, { "name": "Mark", "age": 43 } ]
// 使用點(diǎn)和方括號(hào)表示法訪(fǎng)問(wèn)第一個(gè)成員的名稱(chēng)
console.log(obj_array[0].name); 輸出:Natalie
// 使用點(diǎn)和方括號(hào)表示法訪(fǎng)問(wèn)第二個(gè)成員的年齡
console.log(obj_array[1][ "age"]); 輸出:37
Object.keys()方法
keys()方法返回給定對(duì)象的自身可枚舉字符串鍵屬性的數(shù)組。作為靜態(tài)方法的keys()方法使用Object類(lèi)名調(diào)用。
語(yǔ)法:Object.keys(obj)
參數(shù) | 必需/可選 | 描述 |
obj | 必需 | 要返回其可枚舉屬性的對(duì)象 |
Object.values()方法
values()方法返回給定對(duì)象的自身可枚舉字符串鍵屬性值的數(shù)組。作為靜態(tài)方法的values()方法使用Object類(lèi)名調(diào)用。
語(yǔ)法:Object.values(obj)
參數(shù) | 必需/可選 | 描述 |
obj | 必需 | 要返回其可枚舉屬性的對(duì)象 |
Object.entries()方法
該方法返回對(duì)象的可枚舉屬性的鍵值對(duì)數(shù)組。作為靜態(tài)方法的entries()方法使用Object類(lèi)名調(diào)用。
語(yǔ)法:Object.entries(obj)
參數(shù) | 必需/可選 | 描述 |
obj | 必需 | 要返回其可枚舉屬性的對(duì)象 |
示例
var obj={"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
var keys=Object.keys(obj);
var values=Object.values(obj);
var entries=Object.entries(obj);
console.log("Array of keys :");
console.log(keys);
console.log("Array of values :");
console.log(values);
console.log("Array of entries :");
console.log(entries);
輸出
Array of keys :
[ 'name', 'married', 'age', 'city', 'zip', 'awards' ]
Array of values :
[ 'Natalie', false, 21, 'New York', '10001', null ]
Array of entries :
[
[ 'name', 'Natalie' ],
[ 'married', false ],
[ 'age', 21 ],
[ 'city', 'New York' ],
[ 'zip', '10001' ],
[ 'awards', null ]
]
for循環(huán)
for循環(huán)重復(fù)執(zhí)行,直到指定的條件評(píng)估為false。
語(yǔ)法:for (初始化; 條件; 表達(dá)式) {要執(zhí)行的代碼塊}
參數(shù) | 必需/可選 | 描述 |
初始化 | 必需 | 在執(zhí)行代碼塊之前執(zhí)行一次 |
條件 | 必需 | 執(zhí)行代碼塊的條件 |
表達(dá)式 | 必需 | 在執(zhí)行代碼塊后每次執(zhí)行 |
示例
var obj=[ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
for(var i=0; i<obj.length; i++) {
console.log("Name: " + obj[i]["name"]); //使用方括號(hào)表示法
console.log("Married Status: " + obj[i].married); //使用點(diǎn)表示法
}
輸出
輸出
Name: Natalie
Married Status: true
Name: David
Married Status: false
Name: Mark
Married Status: true
for…in循環(huán)
for...in語(yǔ)句遍歷對(duì)象的所有可枚舉字符串非符號(hào)屬性,包括繼承的可枚舉屬性。循環(huán)內(nèi)的代碼塊對(duì)每個(gè)屬性執(zhí)行一次。
語(yǔ)法:for (item in object) {要執(zhí)行的代碼塊}
參數(shù) | 必需/可選 | 描述 |
item | 必需 | 用于遍歷屬性的變量 |
object | 必需 | 要遍歷的對(duì)象 |
示例
var obj=[ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
for(item in obj) {
console.log("Name: " + obj[item]["name"]); //使用方括號(hào)表示法
console.log("Married Status: " + obj[item].married); //使用點(diǎn)表示法
}
輸出
Name: Natalie
Married Status: true
Name: David
Married Status: false
Name: Mark
Married Status: true
for…of循環(huán)
for..of循環(huán)按順序操作來(lái)自可迭代對(duì)象的值。
語(yǔ)法:array.forEach(iterable object中的變量) {語(yǔ)句}
參數(shù) | 必需/可選 | 描述 |
變量 | 必需 | 對(duì)于每次迭代,下一個(gè)屬性的值被賦給變量。變量可以使用const、let或var聲明。 |
可迭代對(duì)象 | 必需 | 循環(huán)操作的值的來(lái)源。 |
Name: Natalie
Married Status: true
Name: David
Married Status: false
Name: Mark
Married Status: true
## `forEach()`**方法**
`forEach()`方法對(duì)數(shù)組中的每個(gè)元素調(diào)用一個(gè)函數(shù)。它必須至少接受一個(gè)參數(shù),該參數(shù)表示數(shù)組的元素。
*語(yǔ)法:*`array.forEach(function(currentValue, index, array), thisValue)`
| | | |
| --- | --- | --- |
| **參數(shù)** | **必需/可選** | **描述** |
| Function | 必需 | 用于對(duì)數(shù)組每個(gè)元素運(yùn)行的函數(shù) |
| currentvalue | 必需 | 當(dāng)前元素的值 |
| index | 可選 | 當(dāng)前元素的索引 |
| Array | 可選 | 當(dāng)前元素的數(shù)組 |
| Thisvalue | 可選 | 作為this值傳遞給函數(shù)的值。默認(rèn)為undefined。 |
### 示例
```json
var obj=[ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
obj.forEach((item, index, arr)=> {
console.log("元素詳情: " +index);
console.log("姓名: "+arr[index]["name"]);
console.log("年齡: "+item.age);
});
元素詳情: 0
姓名: Natalie
年齡: 21
元素詳情: 1
姓名: David
年齡: 37
元素詳情: 2
姓名: Mark
年齡: 43
JSON通常用于服務(wù)器和Web應(yīng)用程序之間傳輸數(shù)據(jù)。JSON的靈活性、易解析性和簡(jiǎn)單性使軟件開(kāi)發(fā)人員能夠在各種編程環(huán)境中高效地處理結(jié)構(gòu)化數(shù)據(jù)。
. 正則匹配ip地址
<script type="text/javascript">
/*匹配ip地址
//192.35.61.137
//第一段:1--223
個(gè)位數(shù): 1-9 [1-9]
十位數(shù): 10-99 [1-9]\d
百位數(shù): 100-199 1\d\d
二百位1:200-219 2[01]\d
二百位2:220-223 22[0-3]
var reg=/^([1-9]|[1-9]\d|1\d\d|2[01]\d|22[0-3])$/;
//第二、三、四段:0--255
個(gè)位數(shù): 0-9 \d
十位數(shù): 10-99 [1-9]\d
百位數(shù): 100-199 1\d\d
二百位1: 200-249 2[0-4]\d
二百位2: 250-255 25[0-5]
var reg=/^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/;
*/
var reg=/^([1-9]|[1-9]\d|1\d\d|2[01]\d|22[0-3])(\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])){3}$/;
var str="2.0.157.239";
var rst=str.match(reg);
document.write(rst);
</script>
2.正則匹配郵箱
<script type="text/javascript">
/*匹配郵箱
tom@163.com
mary_999@qq.com
_linken123@sohu234.com
2973293@qq.com
xiaoming_555@163.com.cn
Aobama@whitehouce.com
規(guī)則:第一個(gè)內(nèi)容是 字母 或 數(shù)字 或 下劃線(xiàn)
后邊跟許多字母、數(shù)字、下劃線(xiàn)
中間有@符號(hào)
后邊有域名為:字母或數(shù)字混合
后綴:.字母字符串, 并且有多個(gè)
*/
var reg=/^\w{6,10}@[a-z0-9]+(\.[a-z]+)+$/;
var str="xiaoming";//null
var str="297283992@163.com";//["297283992@163.com", ".com"]
var str="_linken123@sohu234.com";//["_linken123@sohu234.com", ".com"]
var str="Aobama@whitehouce.com";//["Aobama@whitehouce.com", ".com"]
var rst=str.match(reg);
document.write(rst);
</script>
3.校驗(yàn)注冊(cè)表單項(xiàng)目
么是JavaScript
JavaScript是一種基于對(duì)象和事件驅(qū)動(dòng)的、并具有安全性能的腳本語(yǔ)言,已經(jīng)被廣泛用于Web應(yīng)用開(kāi)發(fā),常用來(lái)為網(wǎng)頁(yè)添加各式各樣的動(dòng)態(tài)功能,為用戶(hù)提供更流暢美觀(guān)的瀏覽效果。通常JavaScript腳本是通過(guò)嵌入在HTML中來(lái)實(shí)現(xiàn)自身的功能的。
JavaScript特點(diǎn)
是一種解釋性腳本語(yǔ)言(代碼不進(jìn)行預(yù)編譯)。
主要用來(lái)向HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)頁(yè)面添加交互行為。
可以直接嵌入HTML頁(yè)面,但寫(xiě)成單獨(dú)的js文件有利于結(jié)構(gòu)和行為的分離。
跨平臺(tái)特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺(tái)下運(yùn)行(如Windows、Linux、Mac、Android、iOS等)。
JavaScript組成
JavaScript日常用途
1、嵌入動(dòng)態(tài)文本于HTML頁(yè)面。
2、對(duì)瀏覽器事件做出響應(yīng)。
3、讀寫(xiě)HTML元素。
4、在數(shù)據(jù)被提交到服務(wù)器之前驗(yàn)證數(shù)據(jù)。
5、檢測(cè)訪(fǎng)客的瀏覽器信息。
6、控制cookies,包括創(chuàng)建和修改等。
7、基于Node.js技術(shù)進(jìn)行服務(wù)器端編程。
JavaScript的基本結(jié)構(gòu)
<script type="text/javascript"> <!— JavaScript 語(yǔ)句; —> </script >
示例:
…… <title>初學(xué)JavaScript</title> </head> <body> <script type="text/javascript"> document.write("初學(xué)JavaScript"); document.write("<h1>Hello,JavaScript</h1>"); </script> </body> </html>
<script>…</script>可以包含在文檔中的任何地方,只要保證這些代碼在被使用前已讀取并加載到內(nèi)存即可
JavaScript的執(zhí)行原理
網(wǎng)頁(yè)中引用JavaScript的方式
1、使用<script>標(biāo)簽
2、外部JS文件
<script src="export.js" type="text/javascript"></script>
3.直接在HTML標(biāo)簽中
<input name="btn" type="button" value="彈出消息框" onclick="javascript:alert('歡迎你');"/>
JavaScript核心語(yǔ)法:
1. 變量
①先聲明變量再賦值
var width; width=5; var - 用于聲明變量的關(guān)鍵字 width - 變量名
②同時(shí)聲明和賦值變量
var catName="皮皮"; var x, y, z=10;
③不聲明直接賦值【一般不使用】
width=5;
變量可以不經(jīng)聲明而直接使用,但這種方法很容易出錯(cuò),也很難查找排錯(cuò),不推薦使用。
2. 數(shù)據(jù)類(lèi)型
①u(mài)ndefined:示例:var width;
變量width沒(méi)有初始值,將被賦予值undefined
②null:表示一個(gè)空值,與undefined值相等
③number:
var iNum=23; //整數(shù)
var iNum=23.0; //浮點(diǎn)數(shù)
④Boolean:true和false 但是JS會(huì)把他們解析成1;0
⑤String:一組被引號(hào)(單引號(hào)或雙引號(hào))括起來(lái)的文本 var string1="This is a string";
3. typeof運(yùn)算符
typeof檢測(cè)變量的返回值;typeof運(yùn)算符返回值如下:
①u(mài)ndefined:變量被聲明后,但未被賦值.
②string:用單引號(hào)或雙引號(hào)來(lái)聲明的字符串。
③boolean:true或false。
④number:整數(shù)或浮點(diǎn)數(shù)。
⑤object:javascript中的對(duì)象、數(shù)組和null。
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。