1. 程式人生 > 其它 >JavaScript之資料型別

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迭代器