MAP数据类型 (与obj 对象的区别)

返回一个新的数组
当数组中元素是值类型,map不会改变原数组;当是引用类型,则可以改变原数组
// MAP类型  是3阶段和实际项目中,应用比较广泛的一种数据类型
// 是一个 类似于 对象的数据类型

// 重新继续认识一下对象
// 最初,喜欢的是你的动人的容颜
// 之后,喜欢的是你的温柔的性格
// 现在,我深深的爱上你独特的灵魂

// 深入了解JavaScript的对象
// 给对象添加属性和属性值

// 创建一个空对象
// const obj = {};

// obj.name = '张三';

// 添加不同类型属性,和属性值
// 属性之前都是字符串类型,现在如果是其他类型会是什么结果

// const arr = [1,2,3];
// 将一个数组,企图作为对象的键名索引
// 键名是数组中的单元内容
// obj[arr] = '数组';



// const fun = function (){
//     console.log(123)
// } 
// 企图将一个函数,作为对象的键名索引
// 键名是函数的程序内容
// obj[fun] = '函数';


// const a = {name:'张三'};
// 企图将一个对象,作为对象的键名索引
// 键名是 [object Object] 固定内容
// obj[a] = '对象';

// console.log(obj)


// 经典面试题
const obj = {name:'张三'};

const a = {name:'a'};
const b = {name:'b'};

let s = 'sex';

obj[s] = 'sexA';  // 执行结束,obj对象中,内容是什么
                    // 执行结果是 sex:sexA
                    // [s] 会解析变量s 使用的是 变量s 中存储的数据 sex

obj.s = 'sexB';   // 执行结果是 s:sexB
                    // 点语法,不会解析变量s,使用的就是 字符s 作为键名


// const a = {name:'a'};
obj[a] = 100;     // [object Object]: 100    
                    // []语法解析变量a,变量a解析的结果是 对象类型
                    // 对象类型作为键名索引 结果是 [object Object] 固定作为键名
                    
                    
// const b = {name:'b'};
obj[b] = 200;     // 只有 [object Object]: 200
                    // []语法解析变量b,变量b解析的结果 还是对象类型
                    // 新增的单元的键名 还是 [object Object] 
                    // 对象的特点是,不会生成重复的键名
                    // 如果是已经存在的键名是重复赋值,存储新的数值内容
                    // 对 [object Object] 这个键名重复赋值,之后的200,覆盖之前的100
// console.log(obj);


// 介绍MAP类型******************************************
// 基本语法
// 使用内置构造函数,Map() 来声明
// const map = new Map();

// 可以在声明时,同时赋值,赋值必须是二维数组的形式
//        单元1            单元2           单元3
// [ [ 键名 , 数值 ] , [键名 , 数值] , [ 键名 , 数值 ] ....] 
// 二维数组中的 数组单元 ,作为Map类型的单元
// 二维数组中,二维数组的 两个单元 ,第一个单元是Map单元的键名,第二个单元是Map单元的数值

const map = new Map([ ['name','张三'] , [ [1,2,3] , '数组' ] , [ function(){console.log(123)} , '函数' ] , [ {a:100} , '对象' ] ]);                 


// MAP类型的操作方法***************************************

// 1,添加单元
// set() 方法
// 参数1: 新增单元的键名
// 参数2: 新增单元的数值
map.set( 'new' , '我是新增单元' ); 

// 2,获取单元
// get() 方法
// 参数1: 单元键名,获取的结果是对应的数值数据
// console.log( map.get('new') );

// 3,删除单元
// delete() 方法
// 参数1: 要删除的单元的键名
// map.delete('new');

// 4,清除单元
// map.clear();

// 5,判断是否是MAP 的单元
// has() 方法
// 参数1: 要判断的键名
console.log( map.has('new') );

// 6,循环遍历,使用forEach方法

map.forEach(function(item,key){
    console.log(item,key)
})


console.log(map);

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值