#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)。