miller
发布于

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

浏览 (39)
点赞
收藏
评论