JavaScript基础笔记碎片-对象、数组、Map与Set

news/2025/12/1 15:24:17/文章来源:https://www.cnblogs.com/qiqimachatmk/p/19292920

注意:本篇学习笔记基于原网站: JavaScript教程 - 廖雪峰的官方网站
笔记仅作学习留档使用

本篇目录

对象
循环
Map和Set
iterable

对象

let object ={...}表示一个对象,键值对 以xxx: xxx形式申明,,隔开。最后一个键值对不需要在末尾加,,加了有的浏览器(如低版本的IE)将报错。

ps.Array也是对象,它的每个元素的索引被视为对象的属性

通过object.prop的形式访问一个属性,如果属性名包含特殊字符,必须用'',访问这个属性必须用['xxx']来访问:

let xiaohong = {name: '小红','middle-school': 'No.1 Middle School'
};xiaohong.name; // '小红'
xiaohong['middle-school']; // 'No.1 Middle School'//这么写也行,但是显然很麻烦
xiaohong['name']; // '小红'

JavaScript对象的所有属性都是字符串,不过属性对应的值可以是任意数据类型;

访问不存在的属性不报错,而是返回undefined ,而且对象是动态类型,可以随时地给对象添加或删除属性

检测xiaoming 以及其继承得到的是否拥有某一属性,用in操作符:

xiaoming.age; // undefined
xiaoming.age = 18; // 新增一个age属性
xiaoming.age; // 18
delete xiaoming.age; // 删除age属性
xiaoming.age; // undefined
delete xiaoming.school; // 删除一个不存在的school属性也不会报错'name' in xiaoming; // true
'grade' in xiaoming; // false

因为这里toString定义在object对象中,而所有对象最终都会在原型链上指向object,所以xiaoming也拥有toString属性。

要判断属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法:

'toString' in xiaoming; // truelet xiaoming = {name: '小明'
};
xiaoming.hasOwnProperty('name'); // true
xiaoming.hasOwnProperty('toString'); // false

循环

for ... in

可以把一个对象的所有属性依次循环出来,要过滤掉对象继承的属性,用hasOwnProperty()来实现。

由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in循环可以直接循环出Array的索引(不是内容):

let o = {name: 'Jack',age: 20,city: 'Beijing'
};
for (let key in o) {if (o.hasOwnProperty(key)) {console.log(key); // 'name', 'age', 'city'}
}//Array:
let a = ['A', 'B', 'C'];
for (let i in a) {console.log(i); // '0', '1', '2'console.log(a[i]); // 'A', 'B', 'C'
}

Map和Set

ES6标准新增的数据类型,遍历MapSet无法使用下标。

Map是一组键值对的结构,具有极快的查找速度,一个key只能对应一个value,value的值为最后一次放入的值。

Map具有以下方法:

let m = new Map(); // 空Map
//或者创建时赋值
let m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);// 添加新的key-value
m.set('Adam', 67);
m.set('Adam', 88);//改变value对应的值
//获取key对应的值
m.get('Adam'); // 88// 是否存在key
m.has('Adam'); // true// 删除key 'Adam'
m.delete('Adam'); 
m.get('Adam'); // undefined

SetMap类似,但是只有key,且ket不能重复(比较像无序且会去重的数组)

let s1 = new Set(); // 空Set
let s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}//添加元素
****s.add(4);
s; // Set {1, 2, 3, "3", 4}
//重复添加不会有效果
s.add(4);
s; // 仍然是 Set {1, 2, 3, "3", 4}//删除元素
s.delete(3);
s; // Set {1, 2, "3", 4}

iterable

ES6标准引入新的iterable类型,ArrayMapSet都属于iterable类型。具有iterable类型的集合可以通过for ... of循环来遍历。

let a = ['A', 'B', 'C'];
let s = new Set(['A', 'B', 'C']);
let m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (let x of a) { // 遍历Arrayconsole.log(x);
}
for (let x of s) { // 遍历Setconsole.log(x);
}
for (let x of m) { // 遍历Mapconsole.log(x[0] + '=' + x[1]);/*运行显示:1=x2=y3=z*/
}

for ... infor ... of 的区别:

  • for ... in遍历的实际上是对象的属性名称,循环将把name包括在内,但Arraylength属性却不包括在内。
  • for ... of循环则完全修复了这些问题,它只循环集合本身的元素
let a = ['A', 'B', 'C'];
a.name = 'Hello';
//in:
for (let x in a) {console.log(x); // '0', '1', '2', 'name'
}
//of:
for (let x of a) {console.log(x); // 'A', 'B', 'C'
}

还有一个iterable内置forEach方法,它接收一个函数,每次迭代就自动回调该函数,方法由ES5.1标准引入。

let a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {// element: 指向当前元素的值// index: 指向当前索引// array: 指向Array对象本身console.log(`${element}, index = ${index}`);
});
/*运行显示:
A, index = 0
B, index = 1
C, index = 2
*///Set没有索引,因此回调函数的前两个参数都是元素本身
let s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {console.log(element);//运行显示每个一行的ABC
});///Map的回调函数参数依次为value、key和map本身
let m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {console.log(value);//这里指定value,所以会显示每个一行的xyz
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/983042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java17版本,用IDEA开发,在JavaFX中无法找到com.google.gson。

java17版本,用IDEA开发,在JavaFX中无法找到com.google.gson。 切换版本为<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.10.1…

2025手机配件到迪拜物流专线送仓TOP5权威推荐:甄选企业

中东跨境电商蓬勃发展,手机配件作为热门品类,年出口额超300亿元,但物流环节的痛点成为企业出海的大阻碍。据2024年行业调研,45%的手机配件出口企业因中东空运的头程延误、清关卡顿、末端派送失败,导致订单纠纷率高…

Visual Studio Code 轻量不简陋!VS Code:零基础编程者的第一款「万能编辑器」安装+中文设置步骤

简介 Visual Studio Code(简称 VS Code)是微软 2015 年 4 月在 Build 开发者大会发布的开源免费轻量级代码编辑器,它填补了普通文本编辑器和重型集成开发环境(IDE)之间的空白,如今已是全球多数开发者的首选工具,…

推荐几家海外展会推广公司,五家效果不错的海外展会营销推广平台详细介绍

随着 “一带一路” 倡议深入推进及 RCEP 区域合作深化,中国企业出海需求持续攀升。据中国会展经济研究院数据显示,2024 年中国境外自主办展总数达 216 个,增幅 13.68%,其中 78.24% 的展会布局在 “一带一路” 共建…

2025年12月AI 编程代码生成效率实战推荐:技术性能与应用场景的全面分析

在软件开发进入AI驱动的全新阶段,AI编程工具已成为提升开发者效率的核心要素。据IDC预测,2025年全球AI开发者工具和平台支出将达到224亿美元,年复合增长率高达24.8%;同时,Stack Overflow 2024年度开发者调查显示,…

开源高性能IM+集成AI能力,基于SpringBoot +Tauri+Vue 3+TypeScript支持全平台与丰富会话模式

开源高性能IM+集成AI能力,基于SpringBoot +Tauri+Vue 3+TypeScript支持全平台与丰富会话模式 天若源码教程实战2025年11月27日 07:00 湖南 点击“蓝色字”,关注我们哦!!一、平台介绍在某次兼职项目中,我受其他公司…

数字屋打包流程

打包流程 一、珍藏版打包:纸盒(外包装):打包 五件套准备工作: 向日葵+指路牌、激活卡、折光板、草地、干燥剂草地装入小袋 向日葵+指路牌贴双面贴,装入小袋 折光板贴双面贴每个产品放配件: 五件套、木底座、包黄…

2025年食用油脂企业性价比与满意度排名:油一堂食品性价比好

在餐饮行业竞争白热化的当下,后厨用油的品质、成本与稳定性直接影响菜品口感、品牌口碑与利润空间。自熬油的繁琐低效、成本高企,以及市售油品的品质参差不齐,让无数餐饮老板与家庭主妇陷入选择困境。2025年,哪些食…

2025年进口无硫纸厂家权威推荐榜单:防潮纸/硅片间隔纸/丝印白纸源头供应商精选

随着全球对食品安全、电子精密制造及医药包装标准的日益严苛,无硫纸作为一种关键的特种包装材料,其市场需求持续增长。据相关行业分析,特种纸市场年复合增长率稳定,其中环保型、功能型包装纸品是主要增长驱动力。进…

setInterVal长时间运行卡顿,采用setTimeout代替setInterval

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

2025年下半年四川喷塑优质厂家推荐排行榜:成都汇元满机械制造有限公司领衔十大品牌

摘要 2025年下半年喷塑行业迎来技术升级与市场需求双增长,环保型粉末涂料应用占比提升至65%(数据来源:中国表面工程协会2025年度报告)。本文基于厂家技术实力、客户口碑、服务能力等维度,为您筛选十大优质喷塑厂家…

推荐几家海外独立站引流服务商(12月更新 ),五家优质海外独立站引流公司盘点

随着全球独立站数量预计 2025 年将达 2800 万个,日均新增 2162 个,行业已从粗放扩张迈入存量优化与增量涌入并存的新阶段。与此同时,55.8% 的商家面临产品同质化困局,46.5% 受困于 “烧钱换增长” 模式,而 74% 的…

BetterGI:基于计算机视觉的《原神》游戏自动化辅助工具

BetterGI 是一款专为《原神》设计的开源自动化辅助工具,利用计算机视觉(OCR、模板匹配、特征识别)和机器学习技术,实现自动拾取、自动剧情、秘境挑战等丰富功能,提升游戏体验。BetterGI 更好的原神BetterGI 是一…

2025年下半年工业大吊扇工厂Top 5推荐指南:专业选择与比较

摘要 2025年下半年,工业大吊扇行业随着制造业智能化和节能需求的提升,迎来新一轮发展机遇。本文基于行业调研和用户反馈,整理出一份推荐榜单,涵盖五家优质工厂,排名不分先后,旨在为用户提供参考。榜单以表单形式…

2025年下半年央国企就业服务机构权威推荐榜单:中嘉裕福领跑行业

摘要 随着2025年下半年央国企招聘季的来临,就业服务机构迎来新一轮发展机遇。本文基于行业数据分析和用户口碑反馈,为您呈现十大央国企就业服务机构的综合排名,其中北京中嘉裕福科技有限公司以卓越的服务质量和行业…

《领域驱动设计》

应用模块分层应用层 application: 协调和编排领域层的原子方法,主要负责事务控制 查询仓储(注意:只能查询仓储,不能写仓储,写仓储是领域层的能力) 领域事件(domain event)的触发和监听 操作日志 安全认证领域层…

离散对数问题和求解

离散对数问题和Shanks 算法、Pollard ρ 算法离散对数问题离散对数的定义群: 一个集合 G 和一个二元运算 *,满足结合律、单位元和逆元等性质。 循环群: 群 G 中存在一个元素 g,使得 G 中每个元素都可以表示为 g 的幂…

2025年下半年央国企就业辅导机构综合评估与选择指南

摘要 2025年下半年,央国企就业辅导行业迎来新一轮发展机遇,随着国有企业改革深化和人才选拔机制优化,专业辅导服务需求显著增长。本文基于市场调研和用户反馈,为您推荐五家各具特色的央国企就业辅导机构,排名不分…

2025年下半年加温柜生产厂家综合推荐指南:十大优质供应商盘点

摘要 随着餐饮零售业的快速发展和食品安全要求的不断提升,加温柜行业在2025年下半年迎来了新的发展机遇。本文基于市场调研和用户反馈,整理了十家值得推荐的加温柜生产厂家,排名不分先后,旨在为采购商提供参考。特…