最新要闻
- 世界上最大的鱼缸今日突然破裂:100万升水泄露 1500条鱼死亡
- 放假3天不调休!2023年元旦假期首日火车票开售 除夕票这一天就能买
- 天天报道:学谁不好学特斯拉!几十万的宝马车 容不下一个收音机
- 观天下!骗子诈骗1250万 买彩票中1450万:已退还给39名聋哑人
- 全球热讯:XSX性能比PS5强 但为何游戏性能总是输?
- 天天热点!女子发烧敷20分钟面膜揭下变3D立体面具 医生提醒:影响退热 当心面瘫
- 方便面消费第一大国是我们:超6成人每周吃三次
- 热推荐:锂金属电池爱长枝晶?韩国科学家找到破解之法
- 【当前独家】确认了!《阿凡达2:水之道》没有片尾彩蛋
- 天天观速讯丨1152分区+4K 144Hz 联合创新32寸miniLED显示器首发5399元
- 终于修好了!Win11新补丁解决22H2大文件复制缓慢Bug
- 首款第二代骁龙8游戏旗舰!红魔8 Pro来了
- 今日最新!王思聪投资百万成立新公司 经营范围包括动漫游戏开发
- 全球最资讯丨全自动门锁比半自动更人性化!但半自动更受青睐 真相终于揭开
- 【热闻】-真正的国产亲民MPV 新款传祺M6 PRO上市:11.98万起
- 看点-旗下新作首月收入超4.8亿!腾讯成为《妮姬》开发商Shift Up第二大股东
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
第一百一十四篇: JS数组Array(三)数组常用方法
好家伙,本篇为《JS高级程序设计》第六章“集合引用类型”学习笔记
1.数组的复制和填充
批量复制方法 copyWithin(),以及填充数组方法fill()。
【资料图】
这两个方法的函数签名类似,都需要指定既有数组实例上的一个范围,包含开始索引,不包含结束索引。
使用这个方法不会改变数组的大小。
1.1.fill()方法
使用fill()方法可以向一个已有的数组中插入全部或部分相同的值。
开始索引用于指定开始填充的位置,它是可选的。
如果不提供结束索引,则一直填充到数组末尾。
负值索引从数组末尾开始计算。
const array =[0,0,0,0,0];//填充5array.fill(5);console.log(array);//从索引为3的数开始填充3array.fill(3,3);console.log(array);//在索引为1到3的数中填充8array.fill(8,1,3);console.log(array);
1.2.copyWithin()
copyWithin()会按照指定范围浅复制数组中的部分内容,然后将它们插入到指定索引开始的位置
const array =[0,1,0,2,0,3,0,4,0,5];//复制索引0开始的内容,插入到索引8开始时的位置array.copyWithin(8);console.log(array);//复制索引5开始的内容,插入到索引0开始的位置array.copyWithin(0,5);console.log(array);//复制索引0到索引2的内容,插入到索引6开始的位置array.copyWithin(6,0,2);console.log(array);
2.转换方法
前面提到过.所有对象都有toLocaleString()、toString()和valueof()方法。
其中,valueof()返回的还是数组本身。
tostring()返回由数组中每个值的等效字符串拼接而成的一个逗号分隔的三字符串。
let colors = ["red", "blue", "green"];console.log(colors.toString());console.log(colors.valueOf());//使用join()方法可以使用不同的分隔符console.log(colors.join("||"));
3.数组常用方法
方法splice()用于创建一个包含原有数组中一个或多个元素的新数组。
splice()方法可以接收一个或两个参数:返回元素的开始索引和结束索引。
如果只有一个参数,则splice()会返回该索引到数组末尾的所有元素。
如果有两个参数,则splice()返回从开始索引到结束索引对应的所有元素,其中不包含结束索引对应的元素。
记住,这个操作不影响原始数组。
或许最强大的数组方法就属splice()了,使用它的方式可以有很多种。
splice()的主要目的是在数组中间插入元素,但有3种不同的方式使用这个方法。
(确实强大)
(1) 删除。需要给splice()传2个参数:要删除的第一个元素的位置和要删除的元素数量。
可以从数组中删除任意多个元素,比如splice(0,2)会删除前两个元素。
(2) 插入。需要给splice()传3个参数:开始位置、0(要删除的元素数量)和要插入的元素,可以在数组中指定的位置插入元素。
第三个参数之后还可以传第四个、第五个参数,乃至任意多个要插入的元素。
比如,splice(2,0,"red","green")会从数组位置2开始插入字符串"red"和"green"。
(3)替换。splice()在删除元素的同时可以在指定位置插入新元素,同样要传入3个参数:开始位置、要删除元素的数量和要插人的任意多个元素。
要插入的元素数量不一定跟删除的元素数量一致。比如,s(2,1,"red","green")会在位置2删除一个元素,然后从该位置开始向数组中插入""和"green"。
splice()方法始终返回这样一个数组,它包含从数组中被删除的元素(如果没有删除元素,则返回空数组)
(一个方法,满足三个愿望)
试一试:
let colors = ["red", "blue", "green"];colors.splice(0,1);console.log(colors);colors.splice(1,0,"black","orange");console.log(colors);colors.splice(1,1,"pink");console.log(colors);
4.搜索和"判断"方法
4.1.搜索方法
ECMAScript提供了3个严格相等的搜索方法:indexof()、lastIndexof()和includes()。
其中,前两个方法在所有版本中都可用,而第三个方法是ECMAScript7新增的。
这些方法都接收两个参数:要查找的元素和一个可选的起始搜索位置。
indexof()和includes()方法从数组前头(第一项)开始向后搜索,而lastIndexof()从数组末尾(最后一项)开始向前搜索。indexof()和 lastIndexof()都返回要查找的元素在数组中的位置,如果没找到则返回-1。
includes()返回布尔值,表示是否至少找到一个与指定元素匹配的项。
书里面居然没写includes()方法的参数,补充一下:
const array =[1,2,3,4,5,4,3,2,1];console.log(array.indexOf(1));console.log(array.lastIndexOf(1));console.log(array.includes(1));console.log(array.indexOf(1,5));console.log(array.lastIndexOf(1,5));//从索引5开始找"1",找到就返回trueconsole.log(array.includes(1,5));
4.2.断言函数
ECMAScript 也允许按照定义的断言函数搜索数组,每个索引都会调用这个函数。
断言函数的返回值决定了相应索引的元素是否被认为匹配。断言函数接收3个参数:元素、索引和数组本身。
其中元素是数组中当前搜索的元素,索引是当前元素的索引,而数组就是正在搜索的数组。
断言函数返回真值,表示是否匹配。find()和findIndex()方法使用了断言函数。
这两个方法都从数组的最小索引开始。
find()返回第一个匹配的元素,findIndex()返回第一个匹配元素的索引。
这两个方法也都接收第二个可选的参数,用于指定断言函数内部this的值。
let people = [{ name: "panghu", age: "80" }, { name: "dream", age: "50" }, { name: "xiaofu", age: "30" },];console.log(people.find((element, index, array) => element.age > 49));console.log(people.findIndex((element, index, array) => element.age > 49));
(感觉这个归类进迭代方法也没什么问题)
5.迭代方法
ECMAScript为数组定义了5个迭代方法。
每个方法接收两个参数:以每一项为参数运行的函数.个参数:数组元素、元素索引和数组本身。
因具体方法而异,这个函数的执行结果可能会也可能不会影响方法的返回值。
数组的5个迭代方法如下。
(1) every():对数组每一项都运行传入的函数,如果对每一项函数都返回true,则这个方法返回true。
(2) some():对数组每一项都运行传入的函数,如果有一项函数返回true,则这个方法返回true。这些方法都不改变调用它们的数组。
(3) map():对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组。
(4) filter():对数组每一项都运行传入的函数,函数返回true的项会组成数组之后返回。(5) forEach():对数组每一项都运行传入的函数,没有返回值。
可以说,every(),some(),和map()组成一类,他们像断言函数
filter()和forEach()为一类他们则更像"迭代"操作
重要的例子:
const array = [1, 2, 3, 4, 5, 4, 3, 2, 1];//every()全部符合要求,才返回trueconsole.log(array.every((element, index, array) => element > 2));//some()只要有一个符合要求,就返回trueconsole.log(array.some((element, index, array) => element > 2));//map()对所有项调用方法,将每一次调用的结果构成数组返回console.log(array.map((element, index, array) => element > 2));//filter()0把符合要求的筛选出来console.log(array.filter((element, index, array) => element > 2));//forEach()把符合要求的项进行某些操作console.log(array.forEach((element, index, array) => element > 2));
6.归并方法
这个没啥好说的,本质上也是迭代方法的一种,多了几个参数而已
ECMAScript为数组提供了两个归并方法:reduce()和 reduceRight()。
这两个方法都会迭代数组的所有项,并在此基础上构建一个最终返回值。
reduce()方法从数组第一项开始遍历到最后一项。
而 reduceRight()从最后一项开始遍历至第一项。
(一个从左往右,一个从右往左)这两个方法都接收两个参数:对每一项都会运行的归并函数,以及可选的以之为归并起点的初始值:传给reduce()和reduceRight()的函数接收4个参数:上一个归并值、当前项、当前项的索引和数组本身。
这个函数返回的任何值都会作为下一次调用同一个函数的第一个参数。
如果没有给这两个方法传入可选的第二个参数(作为归并起点值),则第一次迭代将从数组的第二项开始,因此传给归并函数的第一个参数是数组的第一项,第二个参数是数组的第二项。可以使用reduce()函数执行累加数组中所有数值的操作.
const array_1 = [9, 90, 900, 9000, 1];let sum = array_1.reduce((prev, cur, index, array) => prev + cur,);console.log(sum);
That"s all
第一百一十四篇: JS数组Array(三)数组常用方法
世界上最大的鱼缸今日突然破裂:100万升水泄露 1500条鱼死亡
放假3天不调休!2023年元旦假期首日火车票开售 除夕票这一天就能买
天天报道:学谁不好学特斯拉!几十万的宝马车 容不下一个收音机
观天下!骗子诈骗1250万 买彩票中1450万:已退还给39名聋哑人
全球热讯:XSX性能比PS5强 但为何游戏性能总是输?
天天速看:Python函数/动态参数/关键字参数
天天热点!女子发烧敷20分钟面膜揭下变3D立体面具 医生提醒:影响退热 当心面瘫
方便面消费第一大国是我们:超6成人每周吃三次
世界速读:注解在Android中的使用场景
热推荐:锂金属电池爱长枝晶?韩国科学家找到破解之法
【当前独家】确认了!《阿凡达2:水之道》没有片尾彩蛋
天天观速讯丨1152分区+4K 144Hz 联合创新32寸miniLED显示器首发5399元
终于修好了!Win11新补丁解决22H2大文件复制缓慢Bug
首款第二代骁龙8游戏旗舰!红魔8 Pro来了
今日最新!王思聪投资百万成立新公司 经营范围包括动漫游戏开发
全球最资讯丨全自动门锁比半自动更人性化!但半自动更受青睐 真相终于揭开
世界简讯:Hessian2序列化支持这一点,让重构dubbo接口更容易了
【热闻】-真正的国产亲民MPV 新款传祺M6 PRO上市:11.98万起
看点-旗下新作首月收入超4.8亿!腾讯成为《妮姬》开发商Shift Up第二大股东
女子高烧39.8度喊妈 妈妈以为鸭子叫没搭理 网友:怎么又变异了
观察-《三体》动画明天开播第3集 官方公布史强、古筝行动档案
【天天聚看点】微信小程序报错“getLocation:fail the api need to be declared in the requiredPriva
【全球快播报】记录--三分钟打造自己专属的uni-app工具箱
视点!小米万兆路由器用上企业级处理器!卢伟冰:降维打击
【天天报资讯】LCD面板价格连连下跌!LG P7 LCD工厂停产
环球关注:中国高速看山东!山东高速施工用上北斗卫星:精度达到毫米级
世界要闻:三大板卡品牌之一的微星缺席RX 7900首发 原因揭晓:直接非公版
世界快消息!女生手捏温度计度数直线飙到38度!腋下一测39.5度
天天日报丨项目经理的核心价值:以目标为导向做正确的事
环球热点评!Vue3项目-生成Cron表达式组件
世界今亮点!MIUI 14终于再次成为最好用的操作系统
ChatGPT已经牛到取代谷歌了?测试结果来了
男子每天点赞上万次被处罚 当庭演示一分钟才点赞91个
【当前独家】“智轨列车”亮相咸阳:可识别虚拟轨道 载客达300人
全球新动态:研究揭示马桶不盖盖后果多严重:致病菌满屋乱飞
全球滚动:Java 反射概念的引入
天天热议:小米13太火爆了 博主准点抢购结果秒没:最后等了20分钟捡漏 成功上车
【天天速看料】“火流星”掉落 专家判断陨石来自46亿年前:比地球上所有石头都古老
当前速看:《阿凡达2》成2022进口片首日票房冠军!时隔69天单日再破亿 豆瓣8.4分
价格能顶半套正版Win11 老牌压缩软件WinZip 27发布 你会买吗?
快播:44岁的泰国长公主因心脏问题失去知觉:紧急送医
渗透实录-01
要闻:Nacos 2.2 正式发布,这次更新太炸了!
世界关注:Kerberos身份验证在ChunJun中的落地实践
IM通讯协议专题学习(五):Protobuf到底比JSON快几倍?全方位实测!
【聚看点】多数据源事务处理-涉及分布式事务
怎么硬盘安装ubuntu?硬盘ubuntu安装教程
佳能5d系列哪个最好?佳能5DX相机参数
诺基亚6200上市价格是多少?诺基亚6200手机参数
烤箱如何预热?烤箱预热的方法有哪些?
短讯!IDEA没有新建jsp文件按钮
VS2022生成控制台引用程序,.net应用导出成exe文件,发部成独立文件的详细图解
MySQL学习笔记2
网页字体变大是怎么回事?网页字体变大了怎么还原?
洞庭连天是什么意思?洞庭连天九疑高是什么生肖?
国庆一词最早出现在什么时候?国庆一词最早出现在什么地方?
蝴蝶发现花蜜靠的是什么?蝴蝶发现花蜜的句子有哪些?
造梦西游3金角大王怎么打?造梦西游3金角大王掉什么?
传闻中的陈芊芊韩烁失忆是第几集?传闻中的陈芊芊韩烁失忆是真的吗?
爱情公寓决战紫禁之巅是第几集?爱情公寓决战紫禁之巅花了多少经费?
曾小莲是什么梗?爱情公寓曾小莲是哪一集?
睢宁县属于哪个市?睢宁县旅游景点有哪些?
类似于惊天魔盗团的电影有哪些?惊天魔盗团剧情解析
独家首发是什么意思?独家首发和普通授权有什么区别?
环球短讯!认证管理(锐捷网关篇)
世界即时看!C语言字符串拆分的两种方式strtok和正则表达式
全球通讯!低代码靠不靠谱?看看低代码在智能物联系统搭建中的应用
美国一战机垂直降落失控 飞行员弹射7秒落地:现场机头先撞地
世界时讯:可拆卸手柄神似Switch!OnexPlayer 2掌机海外发布:起售价超6200元
全球要闻:混动车鼻祖上新 全新丰田普锐斯售价公布:约19.10万元起
一加10T漫威限定版上架:用4年仍然很流畅 4700元
天天观焦点:三连降稳了!新一轮油价三天后开调:预计下跌0.41元/升
世界资讯:因MacBook Pro蝶式键盘翻车:苹果赔了3个多亿
速递!贾跃亭造车梦要成了?FF91交付计划公布 还差10几亿资金
全球热议:爱奇艺VIP会员今起涨价:连续包月黄金25元/月
今日热讯:浙江“火流星”现场被砸大坑!专家:捡到陨石碎片别用水清洗
焦点精选!机械硬盘真没人买!西数股价大跌 公司业绩要暴雷:或将大清库存
每日精选:V2Board机场项目泄露400余万条数据
环球快报:《阿凡达2:水之道》今日内地正式上映:票房瞬间破亿
日系车为什么在中国卖不动了?你为什么不买了?
每日速讯:Blazor和Vue对比学习(进阶.路由导航五):路由守卫
观点:【从零开始学爬虫】采集收视率排行数据
mvn 打包报错:no compiler is provided in this environment
天天微动态丨JavaScript DOM的性能优化详解
每日资讯:VUE的实例的生命周期
每日热门:河洛肉鸽卡牌《天外武林》上架Steam 明年1月发售
别急换机!本月还有6场发布会:劝你先等等再买
世界微动态丨《阿凡达:水之道》预测票房仅25.11亿!远不到《长津湖》一半
【环球新要闻】Epic大促开启 连续15天免费送游戏!75折套娃优惠券来了
【天天播资讯】RTX 4070 Ti跑分首曝:猛升46%、超越RX 7900 XTX
焦点热讯:替代if esle 的高级方法
make学习
天天热门:高手必备10大难题:Mysql如何实现RR级隔离时,不会幻读?
FreeSWITCH学习笔记:应用程序(APP)
速度飞起!全球首款232层闪存SSD细节公布:TLC颗粒、拒绝PCIe 5.0
快资讯:一图看懂moto新机:二代骁龙8 3699元!价格屠夫简直了
全球观察:7-2 案例 字符串关键字的散列映射
天天热议:微软2025年目标:确保非洲再增加1亿人访问互联网
焦点信息:火球坠入浙江 警方带走疑似陨石碎片:现场砸出六七厘米深坑