#js array map object [] {} Map 区别

在 JavaScript 中,[](数组)、{}(对象)和 Map 是三种不同的数据结构,它们在赋值、初始化和获取值的方式上有显著区别。以下是详细对比:

​​1. 数组 ([])​​ ​​初始化​​ let arr = []; // 空数组 let arr2 = [1, 2, 3]; // 带初始值的数组 ​​赋值​​ 通过索引(从 0 开始)赋值: arr[0] = 'a'; arr[1] = 'b'; ​​获取值​​ 通过索引访问: console.log(arr[0]); // 输出 'a' ​​特点​​ 有序集合,索引是数字。 键名只能是字符串或 Symbol(但通常用数字索引)。 长度由 length 属性决定。 ​​2. 对象 ({})​​ ​​初始化​​ let obj = {}; // 空对象 let obj2 = { name: 'Alice', age: 25 }; // 带初始值的对象 ​​赋值​​ 通过键值对赋值(键名会被自动转为字符串): obj.key = 'value'; obj['dynamicKey'] = 123; // 动态键名 ​​获取值​​ 通过点号或方括号访问: console.log(obj.key); // 输出 'value' console.log(obj['dynamicKey']); // 输出 123 ​​特点​​ 键名只能是字符串或 Symbol(非字符串键会被强制转为字符串)。 无序(ES6 规范中对象属性顺序有特定规则,但通常视为无序)。 适合存储键值对数据(如配置、JSON 数据)。 ​​3. Map​​ ​​初始化​​ let map = new Map(); // 空 Map let map2 = new Map([['key1', 'value1'], ['key2', 'value2']]); // 带初始值的 Map ​​赋值​​ 使用 set(key, value) 方法: map.set('name', 'Alice'); map.set(123, '数字作为键'); // 键可以是任意类型 ​​获取值​​ 使用 get(key) 方法: console.log(map.get('name')); // 输出 'Alice' ​​特点​​ 键可以是任意类型(对象、函数等)。 保持插入顺序。 提供丰富的方法(如 has, delete, size)。