js Map和Object的区别

Map

// 创建方式
let map = new Map();

// 新增属性
map.set(1, '值1');
map.set(['key2'], '值2');
map.set(true, '值3');
map.set({}, '值4');
map.set(function fn() {}, '值5');

// key可以为js的任意数据类型,而且顺序和新增的顺序相同
console.log(map); // {1 => "值1", Array(1) => "值2", true => "值3", {…} => "值4", ƒ => "值5"}

// 访问属性
console.log(map.get(1));  // 值1
console.log(map.get(true));  // 值3

// 删除属性
map.delete(1);
console.log(map);  // {Array(1) => "值2", true => "值3", {…} => "值4", ƒ => "值5"}

// 查看长度
console.log(map.size);  // 4

// 检测属性是否存在
console.log(map.has(true));  // true
console.log(map.has(1));  // false

Object

let boo = Boolean(true);
let boo1 = Boolean(false);
let obj1 = { name: 'wq' };
let arr = ['arr1', 'arr2'];

// 创建方式
let obj = { 
    name: '温情',
    [boo]: 'boolean',
    [arr]: 'array',
    10: 'num',
    [obj1]: 'object',
};
// key的复合数据类型全被转换为了字符串,而且顺序和定义的不相同
console.log(obj);  // {10: "num", name: "温情", true: "boolean", arr1,arr2: "array", [object Object]:"object"}
        
// 访问属性
console.log(obj.name);  // 温情
console.log(obj[arr]);  // array

// 删除属性
delete obj[obj1];
delete obj.name;
console.log(obj);  // {10: "num", true: "boolean", arr1,arr2: "array"}

// 新增属性
obj.hight = 500;
obj[boo1] = 'adddd';
console.log(obj);  // {10: "num", true: "boolean", arr1,arr2: "array", hight: 500, false: "adddd"}

// 查看长度
console.log(Object.keys(obj).length);  // 5

// 检测属性是否存在
console.log(boo1 in obj);  // true
console.log('温情' in obj);  // true

结论

  1. key的数据类型可选范围不同

Map:key支持js所有数据类型
Object: key只可以是基本数据类型

  1. 创建的方式不同

Map只可以通过new关键字创建,Object还可以通过字面量、构造函数等方式

  1. 访问属性方式不同
  2. 新增属性方式不同
  3. 删除属性方式不同
  4. 查看大小长度不同
  5. 检测属性是否存在不同

3~7点仔细对比以上代码可以轻松看出

if have error, welcome to correct

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温情key

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值