当前位置: 首页 > news >正文

Javascript基础之Array数组API

Javascript数组原型提供的方法非常之多,主要分为三种:

  • 直接修改原数组
  • 原数组不变,返回新数组
  • 数组遍历方法

直接修改原数组的API

pop()
删除一个数组中的最后的一个元素,并且返回这个元素

push()
添加一个或者多个元素到数组末尾,并且返回数组新的长度

shift()
删除数组的第一个元素,并返回这个元素

unshift()
在数组开始处插入一些元素,并返回数组新的长度

splice()
从数组中添加/删除一些元素,然后返回被删除的元素

reverse()
颠倒数组中元素的顺序

sort()
用于对数组的元素进行排序

fill() -- ES6新增
将数组指定区间内的元素替换为某个值

copyWithin() -- ES6新增
数组内元素之间的替换

返回新数组的API

contact()
将传入的数组或者元素与原数组合并,组成一个新的数组并返回

slice()
连接两个或多个数组

join()
将数组中的所有元素连接成一个字符串

indexOf()
用于查找元素在数组中第一次出现时的索引,如果没有,则返回-1

lastIndexOf()
用于查找元素在数组中最后一次出现时的索引,如果没有,则返回-1

includes() -- ES7新增
用来判断当前数组是否包含某个指定的值,如果是,则返回 true,否则返回false

数组遍历方法

针对数组遍历方法,从

  • 是否影响原数组
  • 是否可中途跳出
  • 有无返回值

三个方面来讨论

forEach()

指定数组的每项元素都执行一次传入的函数,返回值为undefined

let arr=[1,2,3,4];
arr.forEach(function(value,key,arr){  //值,索引,数组(默认为选定数组)
    return item;  //进行任何操作
})  //只返回undefined

return 返回 undefined

return

  • 仅有return:返回undefined
  • return false:返回undefined
  • return true:返回undefined

简言之,仅返回undefined;

总结:

  1. 不会影响原数组
  2. 不会被中断
  3. 仅返回undefined

map()

遍历数组,使用传入函数处理每个元素,并返回函数的返回值组成的新数组

return 返回由 undefined组成的数组,数组个数与原数组个数相同

return

  • return 表达式,返回有响应表达式 组成的数组

简言之,返回值,必定是一个与原数组个数相等的数组;但是数组中的值,根据所做的处理有所不同;

总结:

  1. 不会影响原数组
  2. 不能被中断
  3. 返回值,必定是一个与原数组个数相等的数组;但是数组中的值,根据所做的处理有所不同

filter()

使用传入的函数测试所有元素,并返回所有通过测试的元素组成的新数组

没有return,返回值为空数组;

return

  • 仅有return,返回空数组;
  • return false,返回空数组;
  • return true,返回原数组;(是深拷贝还是浅拷贝)
  • return 其余表达式,如果有判断条件,返回相应判断条件构成的数组;没有判断条件,返回原数组;

简言之,返回值,要么为空数组,要么为原数组,要么为原数组部分元素组成的数组;

总结:

  1. 不会影响原数组
  2. 不能被中断
  3. 返回值,要么为空数组,要么为原数组,要么为原数组部分元素组成的数组

every()

使用传入的函数测试所有元素,每一个元素经传入的函数处理都返回true该方法才返回true,否则返回false(验证是否每一个元素都满足测试函数)

验证是否有元素都满足测试函数,eg: return (element >= 10)

无return:返回false;

return

  • 仅有return :返回false
  • return false:返回false
  • return true:返回true

简言之,只返回 true 或者 false

总结:

  1. 不会影响原数组
  2. 不能被中断
  3. 只返回true 或者 false

some()

使用传入的函数测试所有元素,只要有一个元素经传入的函数处理返回true该方法就返回true,否则返回false(验证是否有元素都满足测试函数)

return,返回 false

return:

  • 仅有return,返回false
  • return false,返回false
  • return true,返回 true;并且后续被中断

简言之,仅返回true、或者false

总结:

  1. 不会影响原数组
  2. return true,可以被中断
  3. 仅返回true、或者false

find() -- ES6新增

返回数组中第一个满足条件的元素(如果有的话), 如果没有,则返回 undefined

return:返回undefined

return

  • 仅有return:返回undefined
  • return false:返回undefined;
  • return true:返回相应的索引值,并且中断

总结:

  1. 不会影响原数组
  2. return true 中断循环
  3. 返回 undefined 或者 相应索引值

findIndex() -- ES6新增
返回数组中第一个满足条件的元素的索引(如果有的话), 如果没有,则返回 -1


keys() -- ES6新增
返回一个数组索引的迭代器


values() -- ES6新增
返回一个数组迭代器对象,该对象包含数组中每个索引的值


entries() -- ES6新增
返回一个数组迭代器对象,该对象包含数组中每个索引的键值对


reduce()
接收一个方法作为累加器,数组中的每个值(从左至右) 开始合并,最终为一个值


reduceRight()
接收一个方法作为累加器,数组中的每个值(从右至左) 开始合并,最终为一个值


最终总结下,对于数组遍历方法,forEach map filter every some find,六个方法,都不会改变原数组,只有some find 可中途跳出循环,返回结果看上述分析;

相关文章:

  • redhat6.4提权Ⅱ
  • 运算符和自增自减
  • ☆1033
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • linux下实用的快速随机生成复杂密码
  • 互联网世界,联通你我,这40张图送给你!让你笑到肚子疼!
  • WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 手写双向链表LinkedList的几个常用功能
  • Python中eval与exec的使用及区别
  • CSS选择器介绍和优先级
  • PPT设计网站 驼峰设计
  • js实现简易的touch事件(es5)
  • Mac OS安装Docker容器的3种方式与差别:Docker for Mac
  • 基于MicroPython的家庭可燃气体泄露微信报警器
  • Apache Pulsar 2.1 重磅发布
  • Facebook AccountKit 接入的坑点
  • gcc介绍及安装
  • JS函数式编程 数组部分风格 ES6版
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python3爬取英雄联盟英雄皮肤大图
  • Sass 快速入门教程
  • uva 10370 Above Average
  • 给第三方使用接口的 URL 签名实现
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 排序算法之--选择排序
  • 前端面试题总结
  • 前端之Sass/Scss实战笔记
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 译有关态射的一切
  • 找一份好的前端工作,起点很重要
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • (02)Hive SQL编译成MapReduce任务的过程
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (C++17) optional的使用
  • (Java数据结构)ArrayList
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (转)视频码率,帧率和分辨率的联系与区别
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .cfg\.dat\.mak(持续补充)
  • .gitignore文件—git忽略文件
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET导入Excel数据
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色