JavaScript支持多種數(shù)據(jù)結(jié)構(gòu)脊凰,這些數(shù)據(jù)結(jié)構(gòu)可以幫助你在程序中組織和存儲數(shù)據(jù)沟堡。以下是一些常見的JavaScript數(shù)據(jù)結(jié)構(gòu):
-
數(shù)組 (Array):
- 數(shù)組是一種有序的集合磨总,可以通過索引訪問元素。
- 示例:
let myArray = [1, 2, 3, 4, 5];
-
對象 (Object):
- 對象是一種無序的鍵值對集合撩荣,用于表示和存儲實(shí)體的屬性。
- 示例:
let person = { name: 'John', age: 30, city: 'New York' };
-
棧 (Stack):
- 棧是一種后進(jìn)先出(Last In, First Out饶深,LIFO)的數(shù)據(jù)結(jié)構(gòu)餐曹。
- 示例:
let stack = []; stack.push(1); stack.push(2); stack.pop(); // 移除并返回最后一個(gè)元素
-
隊(duì)列 (Queue):
- 隊(duì)列是一種先進(jìn)先出(First In, First Out,F(xiàn)IFO)的數(shù)據(jù)結(jié)構(gòu)敌厘。
- 示例:
let queue = []; queue.push(1); queue.push(2); queue.shift(); // 移除并返回第一個(gè)元素
-
鏈表 (Linked List):
- 鏈表是一種線性數(shù)據(jù)結(jié)構(gòu)台猴,由節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)包含數(shù)據(jù)和指向下一個(gè)節(jié)點(diǎn)的引用俱两。
- 示例:
class Node { constructor(data, next = null) { this.data = data; this.next = next; } } let linkedList = new Node(1, new Node(2, new Node(3)));
-
集合 (Set):
- 集合是一種無序且不包含重復(fù)元素的數(shù)據(jù)結(jié)構(gòu)饱狂。
- 示例:
let mySet = new Set(); mySet.add(1); mySet.add(2); mySet.add(1); // 重復(fù)的元素不會被添加
-
映射 (Map):
- 映射是一種鍵值對的集合,其中鍵是唯一的宪彩。
- 示例:
let myMap = new Map(); myMap.set('name', 'John'); myMap.set('age', 30);
-
樹 (Tree):
- 樹是一種分層數(shù)據(jù)結(jié)構(gòu)休讳,由節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)可以有零個(gè)或多個(gè)子節(jié)點(diǎn)尿孔。
- 示例: 二叉搜索樹 (Binary Search Tree, BST)
class TreeNode { constructor(value) { this.value = value; this.left = null; this.right = null; } } let root = new TreeNode(10); root.left = new TreeNode(5); root.right = new TreeNode(15);
這只是JavaScript中一些常見的數(shù)據(jù)結(jié)構(gòu)俊柔,實(shí)際上,JavaScript還支持其他更高級的數(shù)據(jù)結(jié)構(gòu)活合,例如 WeakMap雏婶、WeakSet、TypedArray 等白指。