JS中数组(Array)和字典(Map)的常用方法和属性

从CISCN_2019_N_1看栈溢出漏洞利用:逆向分析与ROP实战 栈溢出是二进制安全领域的经典漏洞类型,其原理源于程序对用户输入数据缺乏边界检查,导致超出预定缓冲区的数据覆盖相邻内存区域。在内存布局中,函数调用时会将返回地址保存在栈上,而栈溢出恰好能篡改这一关键数据,从而劫持程序执行流程,实现任意代码执行。这种漏洞利用技术在CTF竞赛和实际渗透测试中具有重要价值,常被用于权限提升和系统控制。通过分析CISCN_2019_N_1这道典型题目,可以深入理解栈帧结构、函数调用约定以及ROP(面向返回编程)等核心概念。在逆向工程实践中,结合IDA Pro静态分析和GDB动态调试, 阅读详情

0. 数组 Array [ ]

  • 初始化

    var arr1 = new Array();
    var arr2 = [];
    var arr3 = [1, 2, 3];
    
  • 添加元素 - push
    向数组的末尾添加一个或更多元素,并返回新的长度。

    arr1.push(1);
    arr1.push('aaa', 'bbb');
    

    与push相反的方法:unshift 向数组的开头添加一个或更多元素,并返回新的长度。

  • 取出元素 - pop
    删除并返回数组的最后一个元素。

     var item = arr1.pop();
    

    与pop相反的方法:shift() 删除并返回数组的第一个元素。

  • 数组长度 - length

    var arr = [2, 4, 1, 5, 9, 12, 8];
    var arr1 = new Array();
    console.log(arr.length); // 7
    console.log(arr1.length); // 0
    
  • 数组遍历

    var arr = [2, 4, 1, 5, 9, 12, 8];
    
    // 1.传统for循环
    for(var i = 0; i < arr.length; i++){ 
        console.log(arr[i]);
    }
    
    //item为当前元素,index为下标
    arr.forEach(function(item, index){ 
        console.log(item + '|' + index);
    });
    
    // 增强for循环 i为下标
    for(var i in arr){ 
        console.log(arr[i]);
    }
    
  • 查找元素 - indexOf
    indexOf():接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的开头(位置 0)开始向后查找。
    lastIndexOf:接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。

    var arr = [1,3,5,7,7,5,3,1];
    console.log(arr.indexOf(5)); //2
    console.log(arr.lastIndexOf(5)); //5
    
  • 数组排序 - sort

    var arr = [2, 4, 1, 5, 9, 12, 8];
    arr.sort();
    console.log(arr); //[1, 12, 2, 4, 5, 8, 9]
    

    注:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序。所以即使数组的元素为数字,默认也不会按照数字大小排序。

    如需对数组中的数字排序,可参考如下:

    var arr = [2, 4, 1, 5, 9, 12, 8];
    arr.sort(sortNumber);
    console.log(arr); //[1, 2, 4, 5, 8, 9, 12]
    
    function sortNumber(a,b)
    {
        return a - b
    }
    

    完整方法可查看:JavaScript Array 对象
    在这里插入图片描述

1. 字典 Map { }

  • 初始化

    var map = new Map();
    
    // 使用常规的Map构造函数可以将一个二维键值对数组转换成一个Map对象
    var kvArray = [["key1", "value1"], ["key2", "value2"]];
    var myMap = new Map(kvArray);
    
  • 添加元素 - set
    设置Map对象中键的值。返回该Map对象。

    map.set('key1', 'value1');
    
  • 获取元素 - get
    返回键对应的值,如果不存在,则返回undefined。

    map.get('key1'); // value1
    
  • 判断元素是否存在 - has
    返回一个布尔值,表示Map实例是否包含键对应的值。

    map.has('key1'); // true
    
  • 获取所有的key - keys
    返回一个新的 Iterator对象, 它按插入顺序包含了Map对象中每个元素的键 。

    var map = new Map();
    map.set('key1', 'value1');
    map.set('key2', 'value2');
    
    console.log(map.keys()); //MapIterator {"key1", "key2"}
    

    对应的还有values方法,返回一个新的Iterator对象,它按插入顺序包含了Map对象中每个元素的值 。

  • 移除某个元素 - delete
    如果 Map 对象中存在该元素,则移除它并返回 true;否则如果该元素不存在则返回 false

    map.delete('key1'); // true
    
  • 获取字典长度 - size
    size为属性,不是方法,不加()!!!

    var map = new Map();
    map.set('key1', 'value1');
    map.set('key2', 'value2');
    
    console.log(map.size); // 2
    
  • 循环

    var map = new Map();
    map.set('key1', 'value1');
    map.set('key2', 'value2');
    
    map.forEach(function (value, key) {
      console.log(key, '-->', value);
    });
    
    for(var key of map.keys()){
      console.log(key, '-->', map.get(key));
    }
    

2. 序列化为Json

数组Array可以直接使用JSON.stringify()

var arr = new Array();
arr.push('aaa');
arr.push('bbb');

console.log(JSON.stringify(arr)); //["aaa","bbb"]

但字典Map使用JSON.stringify()获取到的为空{},字典需要先转为Obj再转为Json。

var map = new Map();
map.set('key1', 'value1');
map.set('key2', 'value2');

console.log(JSON.stringify(map)); // {}

function strMapToObj(strMap) {
    let obj = Object.create(null);
    for (let [k,v] of strMap) {
        obj[k] = v;
    }
    return obj;
}
console.log(JSON.stringify(strMapToObj(map))); //{"key1":"value1","key2":"value2"}

参考:
1. js数组方法大全
2. Map
3. Converting ES6 Maps to and from JSON

浅谈Javascript 数组与字典 Javascript 的数组Array,既是一个数组,也是一个字典(Dictionary). 先举例看看数组的用法。 代码如下: var a = new Array();  a[0] = “Acer”;  a[1] = “Dell”;  for (var i in a) {      alert(i);   }  上面的代码创立了一个数组,每个元素都是一个字符串对象。 然后对数组进行遍历。注意 i 的结果为 0 和 1,a[i] 的结果才为字符串。 这个很象上一篇中说到的遍历对象的属性。 下面再看一下字典的用法。 代码如下: var computer_price = new A 立即下载

相关推荐

避坑指南:英飞凌TC3XX的MCMCAN初始化常见错误及解决方法

本文针对英飞凌TC3XX系列MCU的MCMCAN模块初始化难题,深入剖析了寄存器配置时序、总线监控模式误用、中断映射错误及Message RAM地址冲突四大常见陷阱。通过实战代码示例和诊断流程,提供了清晰的避坑指南和解决方案,帮助嵌入式开发者高效解决CAN FD通信故障,确保汽车电子与工业控制项目的稳定运行。

weixin_29193259的博客 246

JavaScript的数组和字典的用法

JavaScript 数组有许多内置方法,例如 push()、pop()、shift()、unshift()、splice()、concat()、join()、slice()、filter()、map() 等,用于执行各种操作,如添加、删除、切片、过滤、映射等。JavaScript 中的数组是一种用于存储多个值的数据结构,它可以容纳不同类型的数据(例如数字、字符串、对象等)。ES6 引入了 Map 数据结构,它提供了一种更强大的字典类型,可以支持各种数据类型作为键,而不仅限于字符串。

liulanba的博客 2425

AI智能体升级实战:从规则匹配到Function Call,准确率提升86%的技术选型之路

AI智能体升级实战:从规则匹配到Function Call的技术演进 文章记录了AI邮件助手从传统规则匹配升级到Function Call的技术迭代过程。通过案例分析,揭示了规则匹配的三大核心问题:覆盖不全(用户表达千变万化)、组合困难(多条件容易漏掉)、维护噩梦(每个需求都要新增规则)。测试数据显示,规则匹配在复杂查询中的准确率仅51%,严重影响用户体验。 技术团队对比了三种升级方案:1) 继续优化规则匹配(天花板明显);2) 微调专用NLP模型(成本高);3) 采用Function Call(灵活高效)

yweng18的博客 1079

Javascript数组与字典用法分析

http://www.68idc.cn/help/makewebs/javascript/20141214142024.html 这篇文章主要介绍了Javascript数组与字典用法,以实例形式较为详细的分析了Array作为数组与字典的不同用法,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例分析了Javascript数组与字典用法。分享给大家供大家参考。具体分析如下...

weixin_30938149的博客 248

2022年电赛E题声源定位跟踪系统

电赛声源定位

qq_53357019的博客 2万+

【DRAM存储器六十八】DDR5介绍--DQS Interval Oscillator—动态时序校准利器

DDR5内存采用DQS间隔振荡器(DQSIntervalOscillator)技术应对高速数据传输中的时序漂移问题。该技术通过测量DQS信号在可编程时间窗口内的振荡次数(16位计数值),动态监测温度/电压变化导致的DQS-DQ延迟偏移。控制器通过MPC命令启停振荡器,读取MR46/MR47寄存器获取计数值,并与基准值对比来调整DQS相位,确保数据采样窗口始终处于最佳位置。该机制使DDR5在8400MT/s高速率下仍能保持数据可靠性,有效补偿±0.48tCK的时序偏移。

highman110的博客 153

js数组/字典转json,json转数组/字典

//数组转json var arr = [1,2,3, { a : 1 } ]; JSON.stringify( arr ); //json字符串转数组 var jsonStr = '[1,2,3,{"a":1}]'; JSON.parse( jsonStr );

weixin_44486991的博客 5107

芒果YOLO11改进17:即插即用 | 损失函数Repulsion Loss|Repulsion 解决目标遮挡场景下的目标检测,为解决密集人群检测中遮挡设计的损失函数,打造高效

即插即用 | 损失函数Repulsion Loss|Repulsion 解决目标遮挡场景下的目标检测,为解决密集人群检测中遮挡设计的损失函数,打造高效

包括YOLOv5、YOLOv7、YOLOv8等模型改进 484

【web前端】数组array、集合set、字典map、对象object、字符串string常见方法合集

数组array、集合set、字典map、对象object、字符串string常见方法合集

sinat_39394862的博客 1521

手把手教你学基于 Linux 的 NPU 固件开发-第 10 讲:可靠性设计(RAS)——让系统坚如磐石错误检测、纠正与上报机制(ECC、Parity)

组件推荐保护机制备注HBM/DDRScrubbing必须开启,定期巡检片上 SRAMECC(权重/激活值),Parity(指令)权衡面积与可靠性计算单元ABFT或DMR(关键路径)防止计算逻辑错误片上网络CRC重传保证数据传输完整性系统软件AER 上报CE 监控自动恢复闭环管理,杜绝 SDC运维策略预测性维护Checkpoint变被动为主动核心心法(信任硬件,但必须验证。在纳米尺度下,错误是必然发生的物理现象。

MHD0815的博客 92

【制作100个unity游戏之22】3DRPG游戏开发01——项目的设置和导入及渲染管线的安装修复

如果你现在存在一些疑惑unity导入素材为什么是粉紫色的?表示他没有适配我们的URP通用渲染管线,要如何适配呢?素材渲染错误丢失要如何解决?如果你有上面3个任意的问题,那这篇文章同样适合你,我将手把手教你如何安装修复渲染管线,看完你就了解了!在Unity中,他们都是渲染管线,它们的主要区别在于性能和功能。LWRP是早期版本的URP,它专门为移动设备和低端PC设计,旨在提供更高的性能。它使用基于顶点的光照和简化的后处理效果,可以在更低的硬件要求下运行。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2429

JS中集合对象(Array、Map、Set)及类数组对象的使用与对比

JS中集合对象(Array、Map、Set)及类数组对象的使用与对比 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型。 ES6引入了iterable类型,Array,Map,Set都属于iterable类型,它们可以使用for...of循环来遍历,都内置forEach方法。 数组...

sqLeiQ的博客 2225

Marvell 88Q6113 如何制作一个完整的量产固件88Q6113_flash.bin并进行烧录

本章节介绍如何基于Marvell工具链,制作一个完整的量产固件88Q6113_flash.bin,集成用户自定义的配置文件 config.bin,用于88Q6113的Flash烧录。注:Marvell 88Q5072 与 Marvell 88Q6113 的配置流程是一样的。

老板来份猪脚拼叉烧的博客 2011

js中Map对象的使用方法

语法:mapObj = new Map() 备注:集合中的键和值可以是任何类型。如果使用现有密钥向集合添加值,则新值会替换旧值。属性:下表列出了 Map 对象的属性和描述。构造函数指定创建映射的函数。Prototype — 原型为映射返回对原型的引用。size返回映射中的元素数。方法:下表列出了 Map 对象的方法和描述。clear从映射中移除所有元素。delete 从映射中移除指定的元素。forEach对映射中的每个元素执行指定操作。get 返回映射中的指定元素。has。

前端开发工程师博客 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Js数组Array方法

静态方法: Array.isArray(arr):返回一个布尔值,判断arr是否是数组,可以弥补typeof运算符的不足 实例方法: valueof(),toString():valueof()返回数组本身;toString()返回数组的字符串形式; push(),pop():push可以在字符串末尾添加一个或多个元素,并返回新原数组的长度;pop()删除并返回数组最后一个元素; shift(),unshift():shift()用于删除并返回数组的第一个元素;unshift()在数组第一个位置添加元

Bruce_byan的博客 574

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JavaScript 学习-14.Map 字典对象

前言 JavaScript 中的对象(Object),实际上就是键值对的集合,但是有一个局限性,键(属性)只能是字符串,不能是数字等其他类型。 字典是一种很常见的数据类型,键值对的结构,键应该可以是数字,也可以是字符串。为了解决这个问题,ES6 提供了Map数据结构。 它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。 Map 字典对象 Map 构造一个字典对象 let m = new Map(); console.log(m); // Map(0)

qq_27371025的博客 1149

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JS - Map Set & 去重方法

Map Map是一种数据结构,由键值对组成。Map看起来像一个二维数组,存放着一对对键值对,可通过键名获取对应的键值。将一个对象数组(例如学生成绩对象)转化为Map,可以通过“学生姓名”获取“学生成绩”,Map查询速度更快。 var scoreList = [ { name: 'Tim', age: 18, score: 90 }, { name: 'Tony', age: 17, score: 95 }, { name: 'Kevin', age: 18, score: 91 } ];

chenjineng的博客 8923

js(JavaScript)数据结构之数组(Array)

数组适用于读取操作多、写操作少的情况。

星辰迷上大海的博客 1685

ES6-Array、Map、Set数据结构常用操作

ES6-Array、Map、Set数据结构常用操作 参考资料: https://www.jianshu.com/p/40bc708f8ce7 https://wangdoc.com/javascript/stdlib/array.html Array-数组 属性 length:length属性返回数组的成员总数。 操作方法 1. push(item) push方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。 2. pop() pop方法用于删除数组的最后一个元素,并返回该元素。

举世武双的博客 528

你理解js中map,set,array.from()吗

1.Js中Map对象的使用(es6新增) Map对象保存键/值对,是键/值对的集合。任何值(对象或者原始值) 都可以作为一个键或一个值。Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应。 Map是一组键值对的结构,具有极快的查找速度。

苏苏就是小苏苏的博客 1504

Javascript中数组与字典(即map)的使用(备忘)

简述: 简单记录一下数据结构Map和数组, 其实在Javascript这种弱类型的脚本语言中,数组同时也就是字典,下面主要就是字典数组的简易使用 代码: 1. 数组中添加map Test var arr = []; var key = 'Jeremy'; var value = '!!!!' arr.push({ 'key': key, 'va

霖林烟雨 3万+

js map遍历 修改对象里面的值_js Map对象的用法

第一篇:Map:Map是一组键值对的结构,具有极快的查找速度。举个例子,假设要根据同学的名字查找对应的成绩,如果用Array实现,需要两个Array:var names = ['Michael', 'Bob', 'Tracy'];var scores = [95, 75, 85];给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,Array越长,耗...

weixin_32514497的博客 4038

Array数组

Array常用方法 a、添加元素到第一个:unshift() b、添加元素到最后一个:push() c、删除第一个元素:shift() d、删除最后一个元素:pop() e、删除指定元素:splice() 举例:var aa = [11, ‘aa’, 518, ‘cc’]; aa.splice(1, 1); //删除第二个元素 f、添加元素到指定位置 举例:     var aa = [‘aa...

gacha_man的博客 2374

JavaScript 中的 Array对象方法

 参考:https://wangdoc.com/javascript/stdlib/array.html 一、静态方法 Array.isArray():Array.isArray方法返回一个布尔值,表示参数是否为数组。 二、实例方法 2.1 valueOf():是一个所有对象都拥有的方法,表示对该对象求值;数组的valueOf方法返回数组本身。       toString():也是对象...

Hard042的博客 372

js 常用内置对象之数组(Array)

一.常用内置对象 JavaScript 中所有的事物都是对像 : 字符串、数值、数组、函数… 对象就是带有属性和方法的特殊数据类型 示例一 var food = '牛羊的肉'; function 老虎(){ alert('吃' + food); } function 企鹅(){ alert('也吃'+ food); } 老虎(); // 老虎吃牛羊的肉 企鹅(); // 企鹅也吃牛羊的肉 示例二 //对象(属性和方法), 创建一个对象 : 姓名、年龄、性别、爱好(动作) var perso

Shawn派大星 452

【JS】Array

跟其他语言中的数组一样,Array也是一组有序的数据,不同的是,数组中每个槽位可以存储任意类型的数据;数组也是动态大小的,会随着数据添加而自动增长。数组内存地址本质上不是连续的(会分配连续空间)push/pop方法运行的比较快,而比较慢。数组的原型对象(prototype)的数据类型也是数组数组默认按照字典序比较大小indexOf()、lastIndexOf()和includes()判断是否为数组Array.from将类数组或可迭代的对象转为数组,并返回。......

qq_41298192的博客 200
上一篇: Spring Boot Admin 2.0监控配置
下一篇: Canvas网络教学平台-升级
geekfly
博客等级 码龄12年 149粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值