JavaScript数据结构【数组】

news2024/9/22 15:40:08

一、JavaScript中数组一些方法

方法

描述

push

数组的末尾插入元素

unshift

数组的开头插入元素

pop

从数组的末尾删除元素

shift

数组的开头删除元素

splice

在数组的任意位置添加或删除元素

concat

连接两个或更多数组,并返回结果

filter

对数组中的每个元素给定函数,返回该函数会返回true的元素组成的数组

forEach

返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1

lastIndexOf

返回在数组中搜索到的与给定参数相等的元素的索引里最大的值

map

对数组中的每个元素运行给定函数,返回每次函数调用的结果组成的数组

reserve

颠倒数组中元素的顺序,原先第一个元素现在变成最后一个,同样原先的最后一个元素变成了现在 的第一个

slice

传入索引值,将数组里对应索引范围内的元素作为新数组返回

sort

按照字母顺序对数组排序,支持传入指定排序方法的函数作为参数

toString

将数组作为字符串返回

valueOf

和 toString 类似,将数组作为字符串返回

every

对数组中的每个元素运行丢给一个函数,如果该函数对每个元素都返回 true,则返回 true

some

对数组中的每个元素运行给定函数,如果任一元素返回 true,则返回 true

用法及详细介绍

二、迭代器函数

迭代数组中的元素,最直接简单的方法就是使用循环语句来循环遍历,但JS却内置了很多数组的迭代方法,人家给都给了,为什么不用呢?

既然是迭代总要来个迭代对象把,所以他来了

来个数组

let array = [1,2,3,4,5,6,7,8,9,10]

直接遍历没意思,加点料:

来个函数(如果元素偶数,函数返回true,否则返回false):

const isEven = x => {
  console.log(x);	//方便直观的迭代过程
  return x % 2 === 0;
}

1、用every方法迭代

行为: 方法会迭代数组中的每个元素,直到返回 false。

console.log(array.every(isEven));

可以看到:array的第一个元素是1(奇数),所以isEven函数会返回false,然后every执行结束。

2、用 some 方法迭代

行为:every的行为相反,迭代数组的每个元素,知道函数返回true

console.log(array.some(isEven));

可以看到:array的第一个偶数是2(即第二个元素),第一个被迭代的元素(1)的经过函数返回false,第二个迭代元素是2,函数返回true,迭代结束。

3、用forEach方法迭代

如果要迭代整个数组,可以用forEach方法,和for循环的结果相同。

array.forEach(x => console.log(x % 2 === 0));

4、使用 map 和 filter 方法

共同点:一个会返回新数组的迭代方法

区别

先看map:

const newArray = array.map(isEven);
console.log(newArray.toString());

再看filter:

const newArray = array.filter(isEven);
console.log(newArray.toString());

可以看到,两者的区别很明显,前者(map)返回的数组里存放的是每个元素经过函数判断的返回值(boolean值),而后者(filter)返回的数据里存放的是经过函数判断为true的对应元素, 由函数返回 true 的元素组成。

5、 使用 reduce 方法

reduce 方法接收一个有如下四个参数的函数:previousValue、 currentValue、index 和 array。因为 index 和 array 是可选的参数,所以如果用不到它们 的话,可以不传。这个函数会返回一个将被叠加到累加器的值,reduce 方法停止执行后会返回 这个累加器

示例:对一个数组中的所有元素求和

console.log(array.reduce((previous, current) => previous + current));   //55

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

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

相关文章

String类

String类常用的方法 字符串构造 String类的构造方法很多,常见的有以下的三种: //三种常用的构造方法 public class Test {public static void main(String[] args) {//使用常量串构造String s1 "hello world!";//直接new String对象构造St…

一个 Angular 程序员两年多的远程办公经验分享

笔者从 2020 年疫情爆发之前,一直从事后端开发工作。2020 年因为工作原因,加入了 SAP 一个代号为 Spartacus 的开源项目的开发团队。这个项目是一个基于 Angular 的电商 Storefront 框架,其代码贡献者来自全世界各个地区。 实际上&#xff0…

工薪族创业方案

这是一个创业的时代,想自己创业做老板的人越来越多,其中也包括众多上班族。所碰到的问题:时间紧、资金有限、经验缺乏、患得患失,是几乎所有想自主创业的上班族都会遇到的问题。有以下几个方案可以尝试尝试! 方案一:对于不想冒任何风险而又想尝一尝创业滋味的上班族来说…

jdk11新特性——局部变量类型推断(var ”关键字”)

目录一、什么是局部变量类型推断二、局部变量类型推断(var ”关键字”)2.1、根据右边的表达式自动推断类型2.2、var并不是关键字2.3、var声明变量和String声明变量作用相同三、var 语法:局部变量类型推断(注意事项)3.1…

jsp儿童网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 儿童网站系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发,数据库为Mysql,使用ja…

OpenShift 4 - 利用 RHSSO 实现应用认证和访问授权

《OpenShift / RHEL / DevSecOps / Ansible 汇总目录》 说明:本文已经在 OpenShift 4.11 环境中验证 文章目录安装环境部署应用并配置登录和授权部署应用配置 RHSSO 的用户和组配置应用身份认证配置应用访问授权为应用配置登录和访问授权参考本文将部署一个应用&…

[附源码]Python计算机毕业设计SSM进出口食品安全信息管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【Maven】jar包冲突原因与最优解决方案

【Maven】jar包冲突原因与最优解决方案 文章目录前言jar包冲突原因依赖传递冲突原因jar包冲突解决方案Maven默认处理策略排除依赖版本锁定maven-shade-plugin插件总结前言 你是否经常遇到这样的报错: java.lang.NoSuchMethodError java.lang.ClassNotFoundExcepti…

Endnote 中批量导出PDF

简介 最近正着手写一篇综述文章,来整体把握下自己研究领域的历史、方法、最新进展与趋势。由于需要对相关文献进行搜集、阅读和分类。庄小编使用 EndNote 来进行管理文献。 在使用较长时间后,整理了几个超级好用的小技巧。比如:自动导入某个…

kubernetes—Service介绍

Service介绍 在kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这也就意味着不方便直接采用pod的ip对服务进行访问。 为了解决这个问题,kubernetes提供了Service资…

错误: 找不到或无法加载主类 com.example.demo.DemoApplication 解决方案

使用场景:使用idea搭建springboot项目使,出现报错情况 错误: 找不到或无法加载主类 com.example.demo7.Demo7Application 解决方案: 方法一:取消勾选“将IDE构建/运行操作委托给Maven” 使用步骤:File > Setting…

Eyeshot 2023 预期计划 Eyeshot 2023 即将见面

Eyeshot 2023 预期--Crack--定制 Eyeshot 是一个基于 Microsoft .NET Framework 的 CAD 控件。它允许开发人员快速将 CAD 功能添加到 WinForms 和 WPF 应用程序。Eyeshot 提供了从头开始构建几何体、使用有限元方法对其进行分析并在其上生成刀具路径的工具。还可以使用 CAD 交…

Python源码剖析3-列表对象PyListObject

1、PyListObject对象 PyListObject 对象可以有效地支持插入,添加,删除等操作,在 Python 的列表中,无一例外地存放的都是 PyObject 的指针。所以实际上,你可以这样看待 Python 中的列表: vector<PyObject*>。 [listobject.h] typedef struct {PyObject_VAR_HEAD/* Vecto…

卡尔曼滤波之最优状态估计和最优状态估计算法

1. 最优状态估计 情景1&#xff1a;假设一个一个比赛中&#xff0c;不同队伍的自动驾驶汽车使用 GPS 定位&#xff0c;在 100 种不同的地形上各行驶 1 公里。每次都尽可能停在终点。然后计算每只队伍的平均最终位置。 第一组输了&#xff1a;因为虽然方差小&#xff0c;但是偏差…

基于java+ssm+vue+mysql的社区流浪猫狗救助网站

项目介绍 随着迅速的发展&#xff0c;宠物饲养也较以前发生很大的变化&#xff0c;社区流浪猫狗救助网站系统以其独有的优势脱颖而出。“社区流浪猫狗救助网站”是以JAVA程序设计语言课为基础的设计出适合社区流浪猫狗救助网站&#xff0c;其开发过程主要包括后台数据库的建立…

Vulnhub:Os-Bytesec靶机渗透

目录 前期准备&#xff1a; 渗透过程 测试SMB PATH环境变量介绍 前期准备&#xff1a; 1.在vulnhub官网下载靶机&#xff1a;Os-Bytesec。 2.靶机用virtualbox打开&#xff0c;网络使用仅主机模式&#xff0c;攻击机kali在vmware上使用桥接模式&#xff0c;并桥接到virtru…

性能优化:Netty连接参数优化

参考资料&#xff1a; 《Netty优化》 相关文章&#xff1a; 《Netty&#xff1a;入门&#xff08;1&#xff09;》 《Netty&#xff1a;入门&#xff08;2&#xff09;》 《Netty&#xff1a;粘包与半包的处理》 《性能优化&#xff1a;TCP连接优化之三次握手》 写在开头…

JavaWeb_第5章_会话技术_Cookie+Session

JavaWeb_第5章_会话技术_CookieSession 文章目录JavaWeb_第5章_会话技术_CookieSession1&#xff0c;会话跟踪技术的概述2&#xff0c;Cookie2.1 Cookie的基本使用2.2 Cookie的原理分析2.3 Cookie的使用细节2.3.1 Cookie的存活时间2.3.2 Cookie存储中文3&#xff0c;Session3.1…

vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录

目录 1 dcmtk3.6.7编译 2 vtk9.2.2编译 3 itk5.3编译 4 opencv4.6.0 5 参考链接 编译顺序&#xff0c;qt6.2.4下载----->dcmtk3.6.7----->vtk9.2.2----->itk5.3----->opencv4.6.0 opencv4.6需要使用到vtk9.2.2&#xff0c;需要在最后编译。 opencv遇到…

[附源码]计算机毕业设计校园代取快递系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…