Javascript教程四——对象与遍历

【AUTOSAR-DEM】-2.1-APP SWC设置UDS/OBD DTC检出和恢复 点击返回「《Autosar_BSW高阶配置》总目录」 案例背景(共6页精讲): DEM模块提供两种不同类型的Event: • BSW-related events:DEM_EVENT_KIND_BSW(通过C-API报告 - Dem_SetEventStatus) • SW-C-related events:DEM_EVENT_KIND_SWC(通过RTE operation - SetEventStatus) 下面我们讲讲在APP SWC中设置BusOff(总线关闭) DTC故障成立/恢复(其它 阅读详情

对象

JavaScript用一个{…}表示一个对象,键值对以 xxx: xxx 形式申明,用 , 隔开之后通过对象.属性进行访问。

var person = {
	name: 'ruby_ruby',
	age: 20,
	sex: male
};
person.name; // 'ruby_ruby'
person.age; // 20

如果属性名包含特殊字符,就必须用 ' '括起来

var xiaohong = {
	name: '小红',
	'middle-school': 'No.1 Middle School'
};

**访问这个属性需要使用 ['xxx'] 来访问**。

xiaohong['middle-school']; // 'No.1 Middle School'

JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性

xiaohong.age = 22;  // add a prop
delete xiaohpng.age;  //  delete a prop

可以利用 in判断对象是否拥有某个属性

‘sex’ in xiaohong; // false

可以使用方法hasOwnProperty()来判断是否拥有属性

xiaohong.hasOwnProperty('sex'); // false
xiaohong.hasOwnProperty('age'); // true

JSON

JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。JS将JSON内置在处理器里面,因此可以直接使用JSON进行数据交换,尤其是网络交互。

为了统一解析,JSON的字符串规定必须用双引号"“,Object的键也必须用双引号”"。

把任何JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能够通过网络传递给其他计算机。

如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了。

序列化

var s = JSON.stringify(ruby); // 注意,此时s是一个字符串
// {"name":"ruby","age":"20"}

反序列化

拿到一个JSON格式的字符串,我们直接用JSON.parse()把它变成一个JavaScript对象:

JSON.parse('[1,2,3,true]'); // [1, 2, 3, true]

Map

JavaScript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的(例如我把一个函数当成key,把一个对象当成key)。因此ES6语法中引入Map数据类型。

Map类型定义有两种方式:

1、直接定义一个二维数组
var array1 = new Map( [ ['ruby', 20],  ['bob', 22],  ['xiaohong', 21] ] );

2、先定义一个空间,之后插入数据
var array2 = new Map()
array2.set( ['ruby', 20] );
array2.set( ['bob', 22] );

获取Map中key对应的value 使用get,删除用delete

array1.get('ruby'); // 20
array1.delete('ruby'); // 删除一个key

这里有必要说明一下,当我们需要验证一组数据的访问情况的时候,我们一般会选择利用hash表,而此时便可以利用Map来帮忙实现hash表:

例如我们有一条链表,然后把它们逐个放到Map里面:

ListNode {
	val: '111',
	next: listnode2
} // 一个链表结点

我们就可以通过

let hash = new Map();
hash.set(listNode, listNode.val); // 通过这样的方式,让当前对象作为key

之后我们就可以通过has判断Map中是否访问过:

hash.has(listNode);

也可以通过get来获取value的值。

hash.get(listNode); //  listNode.val =》 111

Set

Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。

重复元素在Set中自动被过滤。

var arr = new Set([1,2,3,4,3,2,5]);  // [1,2,3,4,5]

通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果
通过delete(key)方法可以删除元素

arr.add(6); // [1,2,3,4,5,6]
arr.delete(4); // [1,2,3,5,6]

iterable

ES6标准引入了新的 iterable 类型用于遍历 Array、Map 与 Set 。

具有 iterable 类型的集合可以通过新的 for … of 循环来遍历。

var a = [1, 2, 3];  // 数组
for (var x of a) {
	console.log(x); 
}
// 1,2,3

var s = new Set(['A', 'B', 'C']);   // Set 集合
for (var x of s) {
	console.log(x); 
};// A,B,C

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]); // Map 哈希表
for (var x of m) {
	console.log(x[0] + '-' + x[1]); 
}; // 1-x, 2-y, 3-z

for … of循环和for … in循环的区别

for … in 循环遍历的实际上是 对象的属性名称,可以理解成遍历的是key。
for … of 循环则完全修复了这些问题,它只循环集合本身的元素,也就是value。

更好的方式是直接使用iterable内置的 forEach 方法,它接收一个函数,每次迭代就自动回调该函数,但是forEach有个大问题,那就是return在forEach里面是无法生效的。

var a = ['A', 'B', 'C'];
a.forEach(number => {
	console.log(number);      // 'A', 'B', 'C'
});    

for(let num in a){
	console.log(num); //   0, 1, 2  是key,也就是数组的下标
}

for(let num of a){
	console.log(num);    // 'A', 'B', 'C',也就是数组的value
}

var s = new Set(['A', 'B', 'C']);   // Set 集合
s.forEach( x => {
	console.log(x); 
});// A,B,C

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]); // Map 哈希表
s.forEach( (value, key) => {
	console.log(key + '-' + value); 
}); // 1-x, 2-y, 3-z

for(let num of a){
	console.log(num[0] - num[1]);    // 1-x, 2-y, 3-z
}

本文来源廖雪峰老师教程的笔记,有疑惑可以直接访问廖雪峰老师教程:https://www.liaoxuefeng.com/wiki/1022910821149312/1023022043494624

RandLA-Net Tensorrt 推理 c++ RandLA-Net 实现 Tensorrt 部署. 阅读详情

相关推荐

Shader Graph实战:5分钟搞定Flow Map水体流动效果(含UV偏移避坑指南)

本文详细解析了如何使用Unity的Shader Graph工具快速实现Flow Map水体流动效果,涵盖基础原理、核心节点搭建、高级技巧及性能优化。特别针对UV偏移问题提供避坑指南,帮助开发者轻松打造专业级动态水面效果,适合游戏场景增强视觉表现。

weixin_29250403的博客 246

JS链表系列

什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节由两部分组成,一个是数据域,一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)链接的入口节点称为链表头节点也就是head。.........

qq_48701993的博客 2259

熵编码(五)-CABAC(一) 基础篇

前两篇算术编码文章介绍了算术编码原理和步骤。本篇文章介绍CABAC,基于上下文自适应的二进制算术编码。本文对CABAC的基本原理进行了详细的介绍和分析,下篇文章将会对H264编码中的CABAC熵编码的实际应用进行介绍。

尹佑壮的博客 3885

javascript怎么实现链表?

javascript怎么实现链表?

m0_54007573的博客 718

芯片封装、功率密度提升及热管理系统优化三个维度分析高功率芯片散热技术挑战

本文探讨高功率芯片散热技术挑战与创新。随着新能源汽车MOSFET用量增至400颗/车,文章聚焦封装技术创新(双面散热、集成模块)、功率密度提升(SGT-MOSFET优化)和热管理系统协同优化三大方向。通过热仿真案例(如CPO散热优化)展示温升改善方案,强调需协同器件级设计、系统级仿真与先进封装技术(混合键合/玻璃基板)来解决高密度互连与散热矛盾,为功率密度跃升提供技术支撑。

莱歌数字的博客 1474

论文解读--Phase Noise in FMCW Radar Systems

相位噪声是现代雷达、通信、光谱和计量系统的基本性能参数之一。本文提出了一种适用于FMCW雷达系统的相位噪声理论。导出了一个新的设计方程,用于确定雷达系统中允许的源相位噪声电平的最大界。分析了在传输延迟小于参考振荡器相干时间时,相干混频引起的非线性相位噪声去相关函数;讨论了在传输延迟大于参考振荡器相干时间时,目标响应的频谱展宽。提出了收发链中各子系统的影响,并讨论了一种新的ADC相位噪声模型。介绍了相位噪声建模技术,然后将锁相环频率合成器与低噪声频率合成器进行比较,以演示减少相位噪声边带以改善检测和跟踪性能。

奔袭的算法工程师 3767

ListNode链表

链表反转,单向链表

weixin_46097580的博客 454

在 MATLAB/Simulink 中构建一个固定地面站天线指向控制系统的完整仿真模型

在卫星通信系统中,地面站天线负责与在轨卫星建立高增益、高稳定性的通信链路。对于固定地面站(如卫星测控站、深空站、VSAT主站),天线必须具备高精度指向能力,以确保波束始终对准卫星。然而,卫星(尤其是低轨卫星)在天空中快速移动,地面站天线必须实时跟踪其轨迹。此外,环境扰动(风载、热变形、机械误差)也会导致指向偏差。因此,设计一个高精度、高鲁棒性的天线指向控制系统(Antenna Pointing Control System)至关重要。本文将手把手教你如何在中构建一个固定地面站天线指向控制系统。

amy_mhd的博客 134

javascript中ListNode

定义ListNode class后,记得创建节点时需要new ListNode(),不要和python混淆了。

weixin_45596561的博客 653

5G无人机安全研究综述

国内多所高校提出混合信任模型,南京航空航天大学于2020年提出了起源信息感知的无人机网络信任模型[26],模型基于报文的完整性对报文创建和操作节点的行为评判并生成观测证据,收集证据进行信任评估,识别网络中的恶意节点并进行路由隔离,实现准确的对等信任评估。同时,5G技术的高速率、高可靠性、低时延等特点,能够为无人机提供实时高清图像回传,保证通信网络的稳定,拓展无人机飞控距离限制,丰富了5G无人机的应用场景。5G和无人机技术的融合,丰富了传统无人机的应用服务场景,然而5G无人机仍存在安全隐患。

weixin_70923796的博客 766

【N32L40X】学习笔记12-规则组+注入组+外部触发启动

使用定时器触发规则通道开始采集数据,采集完成后使用dma传输数据,并启动注入通道转换数据,注入通道转换完成后产生中断,中断中读物注入通道数据。

Car12 424

js(JavaScript)数据结构之链表(Linked List)

链表(Linked List)是一种常见的数据结构,它由一系列节点组成,每个节点都包含了数据和指向下一个节点的指针。

星辰迷上大海的博客 2873

C# ScottPlot 5.0 WinForms 十字光标示例:轻松实现动态数值显示,你学会了吗?

ScottPlot是一个免费、开源的.NET交互式绘图库,能够轻松地实现大型数据集的交互式显示。它支持多种图表类型,如折线图、柱状图、饼图、散点图等。ScottPlot的性能非常出色,即使是处理千万级别的数据也游刃有余。

java专栏 2219

JavaScript遍历对象方法总结

前言 本篇内容将按照下图展开: 遍历Object Object最常见的遍历方法方法就是使用for…in…,但其有一定的局限性,比如只能遍历可枚举属性。虽然Object无法直接使用for循环和forEach,但是经过Reflect.ownKeys / Object.getOwnPropertyNames / Object.getOwnPropertySymbols / Object.keys等方法转换直接得到Object中key值的集合后,是可以通过for循环和forEach来遍历的。 方法 获取属

前端学习笔记 2237

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【JavaScript】对象的遍历

遍历对象本身的可枚举属性,返回一个由给定对象自身的可枚举的字符串键属性名组成的数组。方法,这意味着这个对象(或其原型链中的任意一个对象)必须具有一个键值为。也可进行遍历,但是它只能对可迭代对象进行遍历,不能遍历普通对象。返回一个包含给定对象所有自有 Symbol 属性的数组。返回一个给定对象的自有可枚举字符串键属性值组成的数组。返回一个包含给定对象自有的可枚举字符串键属性的键值对。in还遍历原型对象的可枚举属性。返回一个由目标对象自身的属性键组成的数组。来确定某属性是否是对象本身的属性。

m0_63300737的博客 4015

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

js遍历对象方法总结

遍历对象 复制代码 let obj = { a:1, b:true, c:"hello" } 复制代码方法一:通过Object.keys(obj)遍历返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性). Object.keys(obj).forEach(function(key){ console.log(key,obj[key]); ...

weixin_34277853的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

js遍历json对象

原生js遍历json对象 遍历json对象: 无规律: <script> var json = [   {dd:'SB',AA:'东东',re1:123},   {cccc:'dd',lk:'1qw'} ]; for(var i=0,l=json.length;i<l;i++){   for(var key in json[i]){     alert(key...

james_laughing的博客 1万+

js map遍历 修改对象里面的值_JavaScript中数据结构的遍历

一、数据结构在JavaScript中常见的数据结构分为原始类型(Boolean、String、undefined、null)和引用类型(Object)。引用类型里细分又可分为Array、Function、Date等。对象和数组Array的区别在于:对象使用命名索引(即key,key-value对中的key类型为string),而数组是特殊类型的对象其使用数字索引。如果希望元素名为字符串(文本),则...

weixin_42549037的博客 5946

JS中对象、数组、Map的遍历

JS中的数据类型不多,数据、Map以及对象是开发过程中经常使用到的复杂数据结构。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示; 全新的 KaTeX数学公式 语法; 增加了支持甘特图的mermai

Anon 4109

JavaScript:js数组/对象遍历方法

undefinedfor使用最基本的for循环可以遍历数组。for...of语句用来遍历可迭代对象(包括数组、Set、Map、字符串等),它可以替代传统的for循环和forEach方法。for...of循环每次迭代都将返回一个值,而不是索引。循环还可以遍历字符串,并且能够正确处理 Unicode 字符。需要注意的是:for...of 循环不能遍历普通对象,因为它们不是可迭代对象。对于普通对象,可以使用for...in循环来遍历对象的属性。

snow的博客 7323

js对象数据遍历

  JS之对象数组遍历? 一、js实现遍历对象   &lt;script&gt; var obj = {"player_id":"GS001","event_id":"1","destroy":"97%"}; var props = ""; for(var p in obj){ if(typeof(obj

前端技术的学习整理 2340

js数组遍历和对象遍历

原文:https://www.cnblogs.com/yizhilin/p/7344675.html 针对js各种遍历作一个总结分析,从类型用处:分数组遍历和对象遍历;还有性能,优缺点等。 JS数组遍历: 1,普通for循环,经常用的数组遍历 var arr = [1,2,0,3,9]; for ( var i = 0; i <arr.length; i++){ con...

蓝天白云 1926

js 遍历对象的方式

js 遍历对象的方式

喜欢文学的程序员 7545

JavaScript 对象遍历方法及其遍历顺序的总结

介绍内部 ownPropertyKeys 方法,以及for..in,for..of,Object.keys(),Object.getOwnPropertyNames / Symbols(),Reflect.ownKeys() 的遍历属性和遍历顺序的差别

weixin_50290666的博客 5709

JavaScript深度迭代遍历未知对象

文章出自个人博客https://knightyun.github.io/2019/01/27/js-iteration,转载请申明 面向对象编程的语言,都存在对对象的一些操作,其中就包括遍历未知对象的属性值。 通常情况 常见的遍历对象的方法: var o = { name: 'cloud', age: 20 } for (i in o) { console.log(i ...

knight-yun的博客 3740

JavaScript 遍历对象的五种方式

for...in:遍历对象的所有属性,包括继承的属性,但可以通过排除继承的属性。:获取对象的键名数组,结合forEach()遍历。:获取对象的值数组,结合forEach()遍历。:获取对象的键值对数组,结合forEach()或for...of遍历。每种方法都有其特定的使用场景哦!你可以根据具体的需求来选择最适合的方式。希望这篇文章能帮助你更好地掌握 JavaScript 中的对象遍历!🎉。

m0_62599305的博客 1934
上一篇: Javascript教程三——数组
下一篇: Javascript教程五——函数
ruby___ruby
博客等级 码龄9年 2粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值