1_01李婉玲_数据结构_1012
Day03作業(yè) 數(shù)據(jù)結(jié)構(gòu)
概述 基本類型和引用類型
基本類型:String Boolean Number Null Undefined Symbol Bigint。
引用類型:Object(存儲(chǔ)屬性和屬性值) Function。
數(shù)組(Array):有序的值的列表。
集合(Set):唯一值的集合。
特殊集合(WeakSet):特殊Set。
映射(Map):鍵值對(duì)。
特殊映射(WeakMap):特殊Map。
區(qū)別:
對(duì)象 存儲(chǔ)屬性和屬性值
定義對(duì)象:
- Object構(gòu)造器
- 對(duì)象字面量
數(shù)組 有序的值的列表
(與其他編程語(yǔ)言相比)區(qū)別:
定義數(shù)組:(聲明)
- 數(shù)組構(gòu)造器
- 數(shù)組字面量
初始化:
// 數(shù)組初始化 const heroes = [];// 未賦值 console.log(heroes[0]);// Undefinedconst heroes = []; heroes[0] = '蝙蝠俠'; heroes[1] = '神奇女俠'; heroes[2] = '閃電俠'; heroes[5] = '水行俠';// 表示六個(gè)元素,其他元素為Undefined console.log(heroes);const avengers = ['美國(guó)隊(duì)長(zhǎng)','鋼鐵俠','雷神','綠巨人']; console.log(avengers);// 刪除數(shù)組元素:元素個(gè)數(shù)沒(méi)變 const avengers = ['美國(guó)隊(duì)長(zhǎng)','鋼鐵俠','雷神','綠巨人']; delete avengers[0]; console.log(avengers);// 數(shù)組里可以是任意元素類型 let person2 = {name:'liwanling',age:18, }; const a = [0,undefined,'123112',null,person2]; console.log(a);解構(gòu)數(shù)組:將數(shù)組中的元素取出來(lái)賦值給變量。
const array1 = [1,2,3]; let a = array1[0]; let b = array1[1]; let c = array1[2];const [a,b,c] = [1,2,3]; console.log(`a=${a},b=${b},c=${c}`);const [a,b] = [1,2,3];// 兩個(gè)變量a,b console.log(a);數(shù)組的屬性和方法:
pop()方法和delete運(yùn)算符的區(qū)別:pop數(shù)組元素個(gè)數(shù)減少,delete運(yùn)算符元素個(gè)數(shù)沒(méi)變。
多維數(shù)組:
作用:坐標(biāo)系統(tǒng)(二維數(shù)組)以及復(fù)雜算法。
舉例:
數(shù)組去重:(Set和數(shù)組的轉(zhuǎn)換)
const a = [1,2,12,1,2,3,4,5];// 循環(huán)讀取一個(gè)一個(gè)判斷 const b = new Set(a); console.log(b);// Set { 1, 2, 12, 3, 4, 5 } const c = [...b];// 集合變數(shù)組 console.log(c);集合 唯一值的集合
定義集合:
- 構(gòu)造函數(shù),無(wú)字面量。
屬性和方法:
集合 唯一值的集合
- 當(dāng)對(duì)象添加到Set中時(shí),只要Set存在,它們就會(huì)一直存儲(chǔ)在Set中,即使對(duì)對(duì)象的原始引用被刪除了依然如此。用技術(shù)術(shù)語(yǔ)來(lái)說(shuō),就是對(duì)象阻止被垃圾回收,而這會(huì)導(dǎo)致內(nèi)存泄漏。
- WeakSet 通過(guò)垃圾回收任何引用原始引用已經(jīng)被刪掉的“死對(duì)象”,從而可以避免這種情況。
- WeakSet 只能添加非基本類型數(shù)據(jù),否則會(huì)拋出一個(gè)類型錯(cuò)誤(TypeError)。
Map 存儲(chǔ)鍵值對(duì)列表
創(chuàng)建Map:
const romanNumerals = new Map(); romanNumerals.set(1,'I'); romanNumerals.set(2,'II').set(3,'III').set(4,'IV').set(5,'V'); console.log(romanNumerals);// Map { 1 => 'I', 2 => 'II', 3 => 'III', 4 => 'IV', 5 => 'V' }方法和屬性:
Map轉(zhuǎn)換為數(shù)組:
- 擴(kuò)展運(yùn)算符
- Array.from() 方法
WeakMap
鍵不能是基本數(shù)據(jù)類型的值,并且在對(duì)原始對(duì)象的引用被刪除時(shí),垃圾回收會(huì)自動(dòng)刪除所有死條目。
// 內(nèi)存泄漏 let array5 = [1, 'I']; let array6 = [2, 'II']; strong1 = new Map().set(array5).set(array6); // 創(chuàng)建映射,添加數(shù)組。 console.log(strong1.has(array5)); array5 = null; array6 = null; array7 = [...strong1][0]; array8 = [...strong1][1]; console.log(array7);// [ [ 1, 'I' ], undefined ] console.log(array8);// [ [ 2, 'II' ], undefined ]let array9 = [1, 'I']; let array10 = [2, 'II']; weak1 = new WeakMap().set(array9).set(array10); // 創(chuàng)建映射,添加數(shù)組。 console.log(weak1.has(array9)); array9 = null; array10 = null; array11 = [...Weak1][0]; array12 = [...Weak1][1]; console.log(array11); console.log(array12);總結(jié)
數(shù)據(jù)類型
基礎(chǔ)類型:String Number Boolean Symbol undefined null。
引用類型:Object/Function。
對(duì)象
創(chuàng)建對(duì)象的兩種方式
構(gòu)造器
let oStudent = new Object();對(duì)象字面量
let oStudent = {name: 'xaaaa',age: 21 }; oStudent.name // 引用屬性Array
1.創(chuàng)建數(shù)組的兩種方式
構(gòu)造器
const oArray = new Array();數(shù)組字面量
let person1 = {};2.初始化
逐個(gè)賦值
const heroes = []; heroes[0] = '蝙蝠俠'; heroes[1] = '神奇女俠';數(shù)組字面量
const avengers = ['美國(guó)隊(duì)長(zhǎng)','鋼鐵俠','雷神','綠巨人'];3.刪除數(shù)組元素
delete avengers[0];4.解構(gòu)數(shù)組
const [a,b,c] = [1,2,3]; console.log(`a=${a},b=${b},c=${c}`);5.數(shù)組的屬性和方法
length屬性:數(shù)組的長(zhǎng)度。
console.log(avengers.length);pop()方法:刪掉數(shù)組中最后一個(gè)元素。
console.log(avengers.pop());push()方法:將新值添加到數(shù)組的末尾。
avengers.push('蝙蝠俠');shift()方法:刪除數(shù)組中的第一個(gè)元素。
avengers.shift();unshift()方法:將新值添加到數(shù)組的開(kāi)頭。
avengers.unshift('小超人');concat()方法:數(shù)組合并。
const oArray = avengers.concat(heroes); // 擴(kuò)展運(yùn)算符 const oArray = [...avengers,...heroes];join()方法:數(shù)組變成組合了數(shù)組所有元素的字符串。
const a = avengers.join(`&`);slice()方法:從原始數(shù)組中切掉一片,從而創(chuàng)建一個(gè)子數(shù)組。
const b = avengers.slice(2,3);splice()方法:從一個(gè)數(shù)組中刪除元素,然后將新元素插入在被刪除的元素的位置上。
const cc = avengers.splice(2,2,'liwanling','li');reverse()方法:反轉(zhuǎn)數(shù)組中元素的次序(永久性改變)。
const e = d.reverse();sort()方法:對(duì)數(shù)組中的元素按字母順序進(jìn)行排序(永久性改變)。
const g = f.sort();indexOf():檢測(cè)數(shù)組中是否包含一個(gè)特定值,如果找到了,就返回該值在數(shù)組中第一次出現(xiàn)的索引號(hào),否則,就返回-1。
const avengers = ['美國(guó)隊(duì)長(zhǎng)','鋼鐵俠','雷神','綠巨人']; const a1 = avengers.indexOf('美國(guó)隊(duì)長(zhǎng)1'); console.log(a1);// 0includes():檢測(cè)數(shù)組中是否包含特定值,如果找到了,就返回true,否則就返回false。
const a2 = avengers.includes('美國(guó)隊(duì)長(zhǎng)2');Set:沒(méi)有重復(fù)值
1.創(chuàng)建Set
構(gòu)造器
let oSet = new Set();2.添加元素
oSet.add(1).add(2)3.Set的屬性和方法
size屬性:獲取集合中值的數(shù)目。
console.log(list4.size);has()方法:用于檢測(cè)一個(gè)值是否在集合中,該方法會(huì)返回true或者false。
console.log(list4.has('brown'));delete()方法:從集合中刪除一個(gè)值。
list4.delete('the');clear():刪掉集合中的所有值。
list4.clear();4.Set和數(shù)組的轉(zhuǎn)換:擴(kuò)展運(yùn)算符 Array.from()方法
const oArray = [...list4]; const oArray = Array.from(list4); let oSet = new Set([1,2,3]); // 數(shù)組 迭代對(duì)象5.WeakSet
const weak = new WeakSet().add(array1).add(array2); console.log(weak); array1 = null; array2 = null; const array3 = [...weak][0]; const array4 = [...weak][1];Map
1.創(chuàng)建Map
const romanNumerals = new Map();2.方法和屬性
size屬性:獲取鍵和值的數(shù)量。
console.log(romanNumerals.size);get(key):通過(guò)鍵獲取值。
console.log(romanNumerals.get(3));has(key):檢測(cè)一個(gè)特定鍵是否在映射中。
console.log(romanNumerals.has(5));delete(key):從映射中刪除一個(gè)鍵值對(duì)。
romanNumerals.delete(5);clear():從映射中刪除所有鍵值對(duì)。
console.log(romanNumerals);3.Map轉(zhuǎn)換為數(shù)組:擴(kuò)展運(yùn)算符 Array.from() 方法
const oArray1 = [...romanNumerals]; const oArray2 = Array.from(romanNumerals);4.WeakMap
// 內(nèi)存泄漏 strong1 = new Map().set(array5).set(array6); // 創(chuàng)建映射,添加數(shù)組。 weak1 = new WeakMap().set(array9).set(array10); // 創(chuàng)建映射,添加數(shù)組。總結(jié)
以上是生活随笔為你收集整理的1_01李婉玲_数据结构_1012的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: win10删除.x文件的在“你要如何打开
- 下一篇: c语言入门1.2.3 百度云,C语言入门