JavaScript之資料型別
技術標籤:javascriptjavascript
二、資料型別
目錄:字串型別詳解、陣列型別詳解、物件型別詳解、分支和迴圈詳解、Map和Set集合(ES6新特性)、iterator迭代
1.字串型別詳解
正常字串使用單引號和雙引號來包裹。
1)注意轉義字元
①\ ’ 單引號
②\ n 換行
③\ t 水平製表
④\ u### Unicode字元 例:\ u42d表示中
⑤\ x## 例:\ x41表示A
······
2)多行字串編寫:用反引號來包裹
例:
var msg =
`hello
world
你好
世界`
3)模板字串:用美元符加大括號${ }來包裹
例:
let name = "xiaoming";
let age = 3;
let msg = `你好呀,我叫${name},今年${age}歲。`
4)長度字串
str.length
5)字串的可變性
JS中字串是不可變的。
注:可像陣列一樣用下標來獲取字串中的元素。
例:
student[0]=1;
console.log(student);
結果仍為student。
6)大小寫轉換
例:
①轉大寫
student.toUpperCase()
②轉小寫
student.toLowerCase()
注:這裡是方法,不是屬性了。
7)獲取下標
例:
student.indexOf('t')
結果為1。
8)擷取字串substring
例:
student.substring(1)//從第2個字串擷取到最後一個字串
結果為tudent。
student.substring(1,3)//從第2個字串擷取到第3個字串
結果為tu。
(x,y)擷取時包含x,但不包含y,與Java相似。
2.陣列型別詳解
Array可以包含任意的資料型別。
定義陣列
例:
var arr = [1,2,3,4,5,6];
通過下標取值和賦值
例:
arr[0] = 0;
1)長度
arr.length
注:假設給arr.length賦值,陣列的長度大小就會發生變化,呼叫未賦值的元素為undefined,但如果賦值過小,元素就會丟失。
2)indexOf():通過元素獲得下標索引
例:
arr.indexOf(2)
結果為1。
3)slice():擷取Array的一部分,返回一個新的陣列,類似於String中的substring。
4)尾部操作push()、pop()
①push():壓入到尾部。
②pop():彈出一個尾部元素。
4)頭部操作unshift()、shift()
①unshift():壓入到頭部。
②shift():彈出一個頭部元素。
6)排序sort()
例:
var arr1 = ["B","A","C"],
arr1.sort()
結果為[“A”,“B”,“C”]。
7)元素反轉reverse()
例:
var arr2 = ["A","B","C"];
arr2.reverse()
結果為[“C”,“B”,“A”]。
8)拼接concat()
arr2.concat([1,2,3])
結果為[“C”,“B”,“A”,1,2,3]。
注意:concat()並沒有修改陣列,只是會返回一個新的陣列。
9)連線符join:列印並拼接陣列,使用特定字串連線。
例:
arr2.join('-')
結果為"C-B-A"。
10)多維陣列
例:
arr3 = [[1,2],[3,4],["5","6"]];
3.物件型別詳解
這是由若干個鍵值對組成。
定義物件
var 物件名 = {
屬性名: 屬性值,
屬性名: 屬性值,
屬性名: 屬性值
}
例:定義了一個person物件,它有四個屬性。
var person = {
name:"xiaoming",
age:3,
email:2585801995@qq.com,
score:0
}
注:@符號可能有影響。
JS中,{……}表示一個物件,鍵值對描述屬性xxxx: xxxx,,多個屬性之間用逗號隔開,最後一個屬性不加逗號!
1)物件屬性賦值
例:
person.name = "xiaoming";
2)使用不存在的物件屬性:不會報錯,返回undefined。
3)動態的刪除屬性:通過delete刪除物件屬性。
例:
delete person.name
4)動態的新增:直接給新的屬性新增值即可。
person.say = "haha";
5)判斷屬性值是否在這個物件中 xxx in xxx
例:
'age' in person
結果為true。
'toString' in person//繼承
結果為true。
6)判斷一個屬性是否是自身擁有的 hasOwnProperty
例:
person.hasOwnProperty('age')
結果為true。
person.hasOwnProperty('toString')
結果為false。
JavaScript中的所有的鍵是字串,值是任意物件。
例:
person['age']
4.分支和迴圈詳解
1)if判斷
例:
if(score>=60) {
alert("過");
} else if(score<60&&score>0) {
alert("掛科");
} else {
alert("重修");
}
2)while迴圈
注:避免程式死迴圈。
例:
while(i<100) {
i=i+1;
console.log(i);
}
do {
i=i+1;
console.log(i);
}while(i<100)
區別:do-while一定會執行一次,while先判斷,有可能會不執行。
3)for迴圈
例:
for(let i=0;i<100;i++) {
console.log(i);
}
4)forEach(5.1引入的特性)
例:
var arr = [1,2,12,3,23,4];
arr.forEach(function(value,index,arr) {
console.log(value)
})//通過函式
5)for…in迴圈
語法:
for(var index in arr) { }
例:
for(var num in arr) {
console.log(arr[num])
}
5.Map和Set集合(ES6的新特性)
1)Map:與Java的Map相似,相當於Python的字典。
例:
var map = new Map([['tom',100],['jack',90],['peter',80]]);
var name1 = map.get('tom');//通過key獲得value
map.set('david',60);//新增或修改
map.delete("tom");//刪除
2)Set:無序不充分集合
①新增:set.add();
②刪除:set.delete();
③是否包含某個元素:set.has();
6.interator迭代
for…in只能用下標來遍歷
for…of
例:
var arr = [3,4,5];
for(let x of arr) {
console.log(x);
}
注:for…in也支援map和set。
百度搜索symbol中的iterator迭代器