06_数组与集合

news/2025/12/8 8:18:05/文章来源:https://www.cnblogs.com/sinosecurity/p/19319583

1,数组

1.1 定义数字

Js 中数组也是一种对象,称为数组对象。

1,定义空数组

 

myarray=new Array()console.log(myarray.length) // 0myarray[100]="hello"console.log(myarray.length) // 101console.log(myarray[99]) // undifined
 

2,指定数组长度

在定义数组的同时可以指定数组元素的个数。此时并没有为数组元素赋值,所有数组元素的值都是undefined。
arrayObject = new Array(10);console.log(arrayObject.length)
 

3,指定数组元素

在定义数组的同时可以直接给出数组元素的值。
arrayObject = new Array(ele1,ele2,ele3,……)
 
arrayObject = new Array("hello","world")console.log(arrayObject)
 

4,直接定义数组

arrayObject = ["hello","world"]console.log(typeof arrayObject)
console.log(arrayObject)
 

1.2 数组元素的输入和输出

1,数组元素的输入

有 3 种方法向数组中输入元素。
  • 定义数组对象时直接输入数组元素。
arrayObj=new Array("cat","dog","pig")console.log(arrayObj)
  • 利用数组对象写入内容
arrayObj=new Array(9)arrayObj[1]='cat'
arrayObj[2]='dog'
  • 利用for循环
arrayObj = new Array();for (i = 0; i < 10; i++) {arrayObj[i] = i;
}console.log(arrayObj)

2,数组元素的输出

  • 通过下标获取内容
arrayObj = new Array("cat","dog","pig");console.info(arrayObj[1])
 
  • 通过for循环
arrayObj = new Array("cat","dog","pig");for (i = 0; i < arrayObj.length; i++) {console.log(arrayObj[i])
}
 
  • 输出所有内容
arrayObj = new Array("cat","dog","pig");console.log(arrayObj)
 

1.3 稀疏数组

稀疏数组是指包含从0开始的不连续索引的数组。
 
 

1.4 获取数组的长度

arrayObj = new Array("cat","dog","pig");console.log(arrayObj.length)
 

1.5 数组对象的方法

 

1.6 数组的添加和删除

1,concat()

concat()方法用于将其他数组连接到当前数组的尾端。
  • 用法一:
var arr=new Array(1,2,3,4,5,6,7,8);
document.write(arr.concat(9,10));
  • 用法二:
var arr1=new Array("cat","dog","horse");
var arr2=new Array("pig","cow","goat");
document.write(arr1.concat(arr2));
 

2,shift()

shift方法用于删除数组的第一个元素并返回第一个元素。
arrayObject.shift()
 
var arr=new Array(1,2,3,4,5,6);
var Del=arr.shift();
document.write('删除元素为:'+Del+' <br>删除后的数组为:'+arr);
 

3,pop()

pop()方法用于删除并返回数组中的最后一个元素。
arrayObj.pop()
 
var arr=new Array(1,2,3,4,5,6);
var Del=arr.pop();
document.write('删除元素为:'+Del+' <br>删除后的数组为:'+arr);
 

4,push()

向数组的末尾添加一个或多个元素,并返回添加后的数组长度。
arrayObj.push(newEle1,newEle2,……,newEleX)
 
var arr=new Array(1,2,3,4);
document.write('原数组:'+arr+'<br>');
document.write('添加元素后的数组长度:'+arr.push(5,6,7)+'<br>');
document.write('新数组:'+arr);
 

5,unshift()

unshift()方法向数组的头部添加一个或多个元素。
arrayObject.unshift(newelement1,newelement2,...,newelementX)
 
var arr=new Array(4,5,6,7);
document.write('原数组:'+arr+'<br\>');
arr.unshift(1,2,3);
document.write('新数组:'+arr);
 

1.7 设置数组的排列顺序

通过reverse()和sort()方法可以将数组中的元素按照指定的顺序进行排列。
 

1,reverse()

reverse()方法用于颠倒数组中元素的顺序。
arrayObj.reverse()
reverse()方法会改变原来的数组,但不创建新数组。
 

2,sort()

sort()方法用于对数组的元素进行排序。
  • arrayObject.sort(sortby)
    • 1,arrayObject:必选项,表示数组名称。
    • 2,sortby:可选项,规定排序的顺序,必须是函数。
如果调用sort()方法时没有使用参数,将按字母顺序对数组中的元素进行排序,也就是按照字符的编码顺序排序。如果想按照其他标准排序,需要提供比较函数。
var arr=new Array(2,1,4,3,6,5);
console.log('原数组:'+arr)
arr.sort();
console.log('排序后的数组:'+arr)
 

1.8 获取数组中的某段数组元素

  • slice()方法可从已有的数组中返回选定的元素。
    • start:必选项,规定从何处开始选取。如果是负数,说明从数组尾部开始选取。也就是说,-1指最后一个元素,-2指倒数第二个元素,以此类推。
    • end:可选项,规定从何处结束选取。该参数是数组片段结束处的数组下标。如果没有指定该参数,那么截取的数组包含从start位置开始到数组结束的所有元素;如果该参数是负数,那么将从数组尾部开始算起。
    • 返回值:返回截取后的数组元素,该方法返回的数据中不包括end索引所对应的数据。
var arr=new Array("a","b","c","d","e","f");                         //定义数组
document.write("原数组:"+arr+"<br>");                              //输出原数组
//输出截取后的数组
document.write("获取第4个元素后的所有元素:"+arr.slice(3)+"<br>");
document.write("获取第3个到第5个元素:"+arr.slice(2,5)+"<br>");     //输出截取后的数组
document.write("获取倒数第4个元素后的所有元素:"+arr.slice(-4));    //输出截取后的数组
 

1.9 将数组转换成字符串

1,toString()

var arr=new Array("a","b","c","d","e","f");console.log(arr.toString());
转换成字符串后,数组中的各个元素之间以逗号进行分隔。
 

2,toLocaleString()

var arr=new Array("a","b","c","d","e","f");console.log(arr.toLocaleString());

3,join()

join()方法用于将数组中的所有元素放入一个字符串中。
var arr=new Array("a","b","c","d","e","f");console.log(arr.join("*"));
 

2,Map

Map是键值对象。但是Map集合中“键”的范围不仅限于字符串,各种类型的值都可以作为一个键。
 

2.1 创建 Map 对象

var m = new Map([["Tony", 96],["Kelly", 76],["Jerry", 90]
]);console.log(m)
 

2.2 Map 操作方法

1,size 返回键值对的数量

var m = new Map([["Tony", 96],["Kelly", 76],["Jerry", 90]
]);console.log(m.size)

2,set

set()方法用于设置键/值对,然后返回整个Map结构。
var m = new Map([["Tony", 96],]);console.log(m.set("Ket",100))
 

3,get 或者值

var m = new Map([["Tony", 96],["Kelly", 76],["Jerry", 90]
]);console.log(m.get("Tony"))
 

4,has() 方法判断某个 key 是否存在

var m = new Map([["Tony", 96],["Kelly", 76],["Jerry", 90]
]);console.log(m.has("Tony"))
 

5,delete() 删除某个 key,返回是否成功

var m = new Map([["Tony", 96],["Kelly", 76],["Jerry", 90]
]);console.log(m.delete("Tony"))
 

5,clear() 清理所有的元素,无返回值

var m = new Map([["Tony", 96],["Kelly", 76],["Jerry", 90]
]);
m.clear()
console.log(m.size)
 

2.3 Map 集合的遍历

1,keys() 方法

var m = new Map([["Tony", 96],["Kelly", 76],["Jerry", 90]
]);
for (var key of m.keys()) {console.log(key)
}
 

2,value() 方法

var m = new Map([["Tony", 96],["Kelly", 76],["Jerry", 90]
]);
for (var v of m.values()) {console.log(v)
}
 

3,entries() 方法

var m = new Map([["Tony", 96],["Kelly", 76],["Jerry", 90]
]);for (var [key, value] of m) {console.log(key, value)
}
 

4,forEarch() 方法

var m = new Map([["Tony", 96],["Kelly", 76],["Jerry", 90]
]);m.forEach(function (value,key) {console.log(value,key)
})
 

3,Set

Set对象允许存储任何类型的唯一值,无论是原始值或者是对象引用。

3.1 创建 Set

  • 方式一:
var s = new Set()
 
  • 方式二:
var s = new Set(["value1","value2","value3"]);
 

3.2 Set 操作方法

 

1,size 属性

返回Set的大小

2,add()

var s = new Set(["value1","value2","value3"]);console.log(s.add("value4"))
 

3,has()

has()方法用于判断某个值是否在Set集合中。
var s = new Set(["value1","value2","value3"]);console.log(s.has("value1"))
 

4,delete()

var s = new Set(["value1","value2","value3"]);console.log(s.delete("value2"))
 

5,clear()

var s = new Set(["value1","value2","value3"]);
s.clear()
console.log(s.size)
 

3.3 Set 结合的遍历

1,values()

values()方法用于返回Set对象中值的数组.
var s = new Set(["value1","value2","value3"]);for (var x of s.values()) {console.log(x)
}
 

2,entries()

Set集合的entries()方法用于返回一个迭代器,可以按照插入值的顺序产生包含两个元素的数组,这两个元素是集合中每个值的重复出现。
var s = new Set(["value1","value2","value3"]);for (var x of s.entries()) {console.log(x)
}
 

3,forEarch()

var s = new Set(["value1","value2","value3"]);s.forEach(function (value) {console.log(value);
});
 

4,迭代器

迭代是指按照顺序反复多次执行一段程序,通常会有明确的终止条件。
 

4.1 迭代器原理

迭代器用于迭代与其关联的可迭代对象,它是一种一次性使用的对象。例如,通过可迭代对象的迭代器方法Symbol.iterator生成迭代器,对指定数组进行迭代,代码如下。
var arr = ["电影","音乐","动漫"];
var iter = arr[Symbol.iterator]();           //生成迭代器
//执行迭代
console.log(iter.next().value + "<br>");
console.log(iter.next().value + "<br>");
console.log(iter.next().value + "<br>");
console.log(iter.next().value + "<br>");
 
 
 
 
 
 
 
 
 
 
 

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

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

相关文章

05_对象

对象是JavaScript中的基本数据类型之一,是一种复合的数据类型。对象将多种数据类型集中在一个数据单元中,通过对象可以存取这些数据的值。1,对象简介 1.1 对象的概念 Js 中对象有两个钥匙: 1,属性 2,方法 属性和…

2025年12月江苏新沂U型槽品牌推荐前十强分析

摘要 2025年12月,江苏新沂地区U型槽行业在水利工程和农业灌溉领域持续发展,市场需求增长带动品牌竞争。本文基于第三方调研和数据,整理出前十家U型槽品牌推荐榜单,排名不分先后,旨在为读者提供参考。表单内容涵盖…

2025年下半年北京NPDP培训机构综合评估与选择指南

摘要 随着产品开发与管理领域的快速发展,NPDP(新产品开发专业人士)认证已成为产品经理、创新管理者等职业发展的重要资质。2025年下半年,北京地区的NPDP培训市场呈现出多元化发展态势,各类培训机构为学员提供了丰…

2025年评价高的深睡凝胶枕/凝胶枕高评价厂家推荐榜

2025年评价高的深睡凝胶枕/凝胶枕高评价厂家推荐榜开篇:行业背景与市场趋势随着现代人对睡眠质量要求的不断提高,枕头市场正经历着一场技术革命。近年来,凝胶枕凭借其独特的材质特性迅速崛起,成为高端寝具市场的明…

2025年北京NPDP培训中心实力对比

摘要 随着产品开发与管理行业的快速发展,NPDP(新产品开发专业人士)认证在2025年成为职场人士提升竞争力的关键。本文基于行业调研和用户反馈,整理了北京地区NPDP培训公司的推荐榜单,旨在为读者提供参考。榜单排名…

07_String对象

1,String 对象的创建 String对象用于操作和处理文本串,通过它可以获取字符串的长度、提取子字符串,以及将字符串转换为大写或小写字符。 var newstr = new String(StringText)2,String 对象的 3 个属性1,length 属…

04_函数

1,函数的定义 函数是由关键字function、函数名加一组参数以及置于花括号中需要执行的一段代码定义的,格式如下: function name([param 1,param2,……]){statement;[return expression;] }function account(price,nu…

2025年靠谱的专业AB枕芯厂家推荐及选择指南

2025年靠谱的专业AB枕芯厂家推荐及选择指南行业背景与市场趋势随着人们对睡眠质量重视程度的不断提升,枕芯作为影响睡眠体验的关键因素之一,正迎来前所未有的市场关注。2024年全球睡眠经济规模已突破5000亿美元,其中…

2025年12月江苏新沂U型槽品牌前十推荐与选择指南

摘要 随着江苏新沂地区基础设施建设的快速发展,U型槽作为水利和排水工程的关键组件,市场需求持续增长。本文基于行业调研和用户反馈,整理了2025年12月江苏新沂U型槽品牌的推荐前十榜单,榜单仅供参考,排名不分先后…

2025年下半年江苏徐州电表箱品牌推荐前十指南

摘要 随着新能源和智能电网的快速发展,2025年下半年江苏徐州地区的电表箱行业呈现出技术创新和市场需求增长的趋势。电表箱作为电力分配和安全保障的关键设备,在居民、商业和工业应用中日益重要。本文提供一份电表箱…

2025-12-08 GitHub 热点项目精选

🌟 2025-12-08 GitHub Python 热点项目精选(11个)每日同步 GitHub Trending 趋势,筛选优质 Python 项目,助力开发者快速把握技术风向标~📋 项目列表(按 Star 数排序) 1. microsoft/VibeVoiceVibeVoice is a n…

2025年比较好的矿山边坡防护网/被动边坡防护网实力厂家TOP推荐榜

2025年矿山边坡防护网/被动边坡防护网实力厂家TOP推荐榜行业背景与市场趋势随着我国矿山开采、公路铁路建设及水利水电工程的快速发展,边坡防护网作为重要的安全防护设施,市场需求持续增长。据行业统计,2024年我国边…

2025年12月徐州拓普互动品牌综合评估与优选推荐

摘要 随着虚拟现实技术在文旅产业的深度融合,2025年徐州地区拓普互动品牌迎来快速发展期。本文基于行业调研数据及用户反馈,为您提供五家值得关注的拓普互动品牌推荐,排名不分先后,均属行业优质选择。特别说明:本…

2025年12月徐州拓普互动品牌综合评估与优选指南

摘要 随着虚拟现实技术在文旅产业的深度融合,2025年徐州地区拓普互动品牌呈现多元化发展态势。本文基于市场调研数据整理出10家值得关注的品牌(排名不分先后),重点推荐徐州拓普互动智能科技有限公司。以下表单仅供…

2025年热门的双面法兰绒厂家推荐及选择参考

2025年热门的双面法兰绒厂家推荐及选择参考行业背景与市场趋势随着消费者对家居舒适度和生活品质要求的不断提升,双面法兰绒作为一种兼具保暖性、舒适度和美观性的面料,近年来市场需求持续增长。2024-2025年,全球法…

2025年下半年北京PMP项目管理培训十大优质机构推荐与选择指南

摘要 随着项目管理专业人才需求持续增长,2025年下半年北京PMP培训市场呈现多元化发展态势。本文基于行业调研和学员反馈,整理出十家值得关注的PMP培训机构信息,排名不分先后,仅作参考。特别提醒:本文提供的联系方…

2025年下半年江苏新沂盖板品牌精选推荐前五指南

摘要 盖板行业在江苏新沂地区发展迅速,2025年下半年市场需求持续增长,涉及建筑、市政工程等多个领域。本文基于综合评估,推荐五家盖板品牌,排名不分先后,仅供用户参考。表单咨询可帮助获取更多详情,其中新沂市天…

2025年12月山东临沂钻铣磨一体机品牌综合推荐与选购指南

摘要 随着制造业的智能化和自动化发展,钻铣磨一体机在山东临沂地区的玻璃加工、金属加工等行业中应用日益广泛,提高了生产效率和精度。本文基于行业调研和用户反馈,整理了2025年12月山东临沂钻铣磨一体机品牌的推荐…

01_初识JavaScript

1,JavaScript 概述 Javascript 可以运行在浏览器和 nodejs 中。语言特点解释性、基于对象、事件驱动、跨平台、安全性。(1)解释性。JavaScript不同于一些编译性的程序语言,如C、C++等,它是一种解释性的程序语言,其…

苏州地区月嫂保姆护工服务公司2025年12月排行榜

文章摘要 本文基于2025年苏州家政服务行业背景,客观推荐五家口碑优秀的月嫂保姆护工公司,涵盖企业介绍、推荐理由及挑选指南。内容综合企业规模、技术实力等多维度,为家庭用户提供参考,帮助选择可靠服务。 正文内容…