【前端学习]】javascript数组(Array)

前端从入门到精通---数组(Array) 前端从入门到精通—数组(Array) 数组是有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。Javascript的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组。 数组的声明 直接声明 var arr = ['Javascript', 'PHP', 'Java'] console.log(arr) # ['Javascript', 'PHP', 'Java'] 声明一个空数组,再通过 push 方法插入 var arr = [] 阅读详情
学习思维导图

  


前言
    最近几年,前端技术发展迅速,涌现出了大量的框架和插件,在项目开发的过程中,大大小小框架要用到无数个,要想快速掌握这些框架的,前端的基础知识是必须要掌握的,不然太影响开发效率了. 
    而我个人记忆力有不太好,学了容易忘记,所以采有的学习方式是先学习资料,然后整理成思维导图。一来方便记忆,二来方便以后的复习。 这就是为什么一开始就上思维导图的原因。下面将根据思维导图来做一些详细说明。

JS数组的特点
    数组大小可以动态变化。 部分编程语言(如java),创建数组时,必须要明确指定数组的大小(length),存储元素时,超出数组的大小会出异常,而JS不是这样的,数组定义时不需要指定数组大小(指定了也没什么用),存储元素时不用考虑到数组的大小以及下表值。
      数组中可以存储不同类型的元素。 java语言,数组只能存储同一种类型的元素,要不全部是int、要不全部是String,而JS中的数组不是这样的,一个数组中可以同时存储int和String。
      数组元素不是存储在一段连续的内存集合。 java语言,创建数组时,会根据数组的定义分配一段连续的内存用来存储元素,而JS中不是这样的,它的元素可能存储在不连续的内存区。
可参照下面代码加深理解:
var  arr = new Array(2);  //定义一个数组
arr[0] = 'a0';
arr[1] = 'a1';
arr[2] = 'a2';   //数组大小可动态变化,赋了3个元素
// var arr=['a1','a2','a3']  定义数组推荐的方式

arr[4] = 4;  //数组中的元素可以是不同类型 

console.log(arr[3]);   //undefined   不定义值也是可以的
arr[3] = 'a3';</span></span>

JS数组的操作 - 增加/删除元素
     增加元素很简单,直接指定数组下标,然后赋值即可。这里主要描述下增加/删除数组元素相关的API。
     push: 将一个或多个新元素添加到数组结尾,并返回数组新长度
     unshift: 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
     pop: 移除最后一个元素并返回该元素值
     shift: 移除最前一个元素并返回该元素值,数组中元素自动前移
可参照下面代码加深理解:
console.log(arr.toString()); //a0,a1,a2,a3,4 Array重写了toString()方法
//当前对象是数组么?
console.log(Object.prototype.toString.call(arr) === '[object Array]');  //true

arr.push('p1');  //添加元素到数组结尾
console.log(arr.toString());  //a0,a1,a2,a3,4,p1

arr.unshift('unsf1');  //添加元素到数组开头
console.log(arr.toString()); //unsf1,a0,a1,a2,a3,4,p1

arr.pop(); // 删除掉数组结尾元素
console.log(arr.toString()); //unsf1,a0,a1,a2,a3,4

arr.shift(); //删除掉数组头元素
console.log(arr.toString()); //a0,a1,a2,a3,4</span></span>

JS数组的操作 - 排序
    这里主要描述两个API:
    reverse: 反转元素(最前的排到最后、最后的排到最前)。注意:此时是在原有的数组上进行修改
    sort([compare]):  对数组元素进行排序。注意,排序时,首先会调用元素的toStirng()方法将元素转换成字符串,然后比较个元素的字符串形式进行最后的排序。
 可参照下面代码加深理解:
var arr1 = [1,2,9,23,7];

var  newArr = arr1.slice(0);  //克隆arr1 不让arr1值受影响
// var  newArr = arr1.contact();  这样克隆也是可以的
newArr.reverse()  //将数组倒过来
console.log(newArr.toString());  //7,23,9,2,1

newArr = arr1.slice(0);
newArr.sort();   //将数组排序
console.log(newArr.toString());  //1,2,23,7,9

newArr = arr1.slice(0);
newArr.sort(function(a,b){   //重新排序,我要的不是那个
	return a - b;
});
console.log(newArr.toString());   //1,2,7,9,23</span></span>

JS数组的其它API - splice
    splice是数组中非常强大的一个方法,通过该方法,基本上可以对数组进行任何复杂的添加和删除操作,该方法参数主要分三段: 第一个参数为数组的起始下标,第二个参数为数组要删除元素的个数(0表示不删除),后面的参数为插入到数组的元素值(从第一个参数标识的起始下表后开始插入元素)。
 可参照下面代码加深理解:
var arr2 = [1,2,9,23,27,5,4];

arr2.splice(3,2); //删除从下标为3开始的后2个元素
console.log(arr2.toString());  //1,2,9,5,4

// 在下标为为3后插入 in1 in2 in3
arr2.splice(3,0,'in1','in2','in3');
console.log(arr2.toString());  //1,2,9,in1,in2,in3,5,4
</span></span>

JS数组的其它API - every /filter /forEach /map
     ECMAScript5为数组定义了这几个方法,每个方法都接收两个参数: 在数组每一项元素上运行的函数和函数的作用域对象(可选)。由于针对于这几个方法,部分浏览器是不支持的(如IE8以下),所以使用的使用要慎重。
   every: 对数组中每一个元素都运行函数,如果该函数对每一项都返回true,则every执行结果为true
   filter: 对数组中每一个元素都运行函数,返回函数执行返回true的元素
   forEach: 对数组中每一个元素都运行函数,该方法没有返回值
   map:对数组中每一个元素都运行函数, 返回由每次函数执行的结果组成的数组
 可参照下面代码加深理解:
// arr2 =  1,2,9,in1,in2,in3,5,4
//只要数组里的类型为数字的元素
var arr3 = arr2.filter(function(ele,index,arr2) {
    return typeof ele == 'number';
});

// 现在数组里元素都是数字了吧?
var isAllNumber = arr3.every(function(ele,index,arr3){
     return typeof ele == 'number';
});

//注意:原数组的值是不变的
console.log(arr2.toString());  //1,2,9,in1,in2,in3,5,4
console.log(arr3.toString()); //1,2,9,5,4
console.log(isAllNumber); // true

// 数组中每个元素都要翻10倍
var arr4 = arr3.map(function(ele,index,arr2) {
	return ele*10;
});
console.log(arr4.toString());  //10,20,90,50,40

var arr5 = arr4.slice(1,3);  //只要下标为2或3的元素
console.log(arr5.toString());  // 20,90

arr5.forEach(function(ele,index,arr){
	console.log("模拟插入元素到数据库:"+ele);
});
//模拟插入元素到数据库:20
//模拟插入元素到数据库:90</span></span>

总结
    文章很大部分讲解的是数组的API,可能有些人比较奇怪和不屑,API有什么好说的,用的时候直接查文档就行了。我以前也是这么认为的,可以在开发的过程中,我发现查询API非常耗时,影响开发效率。还有个原因就是,我认为在采用一门编程语言进行业务实现时,不仅要让代码正确的运行,同时你的写的代码要符合这门语言的编码规范,语言要有可读性,例如,如果有个需求是要求在数组中插入2个元素时,如果你不知道splice方法,那很可能会采用for循环遍历数组实现数组的插入和移动。如果你的同事看到这些代码,是不是感觉很无语?


知识点2:js(javascript)中检测是否为数组的两种方法【翻转数组案例】 系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可 阅读详情

相关推荐

miRNA测序数据生信分析——第一讲,总结概述

这里的miRNA测序指转录水平的测序。这里每一个数据库都可以在线访问,但是如果要本地使用,都需要进行数据库文件下载,整理。

weixin_44616693的博客 4950

前端js中array数组的使用

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div class=""> </div> </body> </html> <script type="text/javascript"> //数组:本质

个人笔记 812

用Quartus II和LPM_ROM手把手复现西电计组课设:从微指令到五条指令的完整流程

本文详细介绍了使用Quartus II和LPM_ROM复现西电计组课设的完整流程,从微指令编写到五条指令的实现。通过环境搭建、LPM_ROM配置、微程序设计及调试技巧,帮助读者高效完成课程设计,避开常见问题。适合计组课程设计的学习者和实践者参考。

weixin_29288313的博客 455

[前端学习] javascript - 数组(Array)

学习思维导图       前言 最近几年,前端技术发展迅速,涌现出了大量的框架和插件,在项目开发的过程中,大大小小框架要用到无数个,要想快速掌握这些框架的,前端的基础知识是必须要掌握的,不然太影响开发效率了. 而我个人记忆力有不太好,学了容易忘记,所以采有的学习方式是先学习资料,然后整理成思维导图。一来方便记忆,二来方便以后的复习。 这就是为什么一开始就上思维导图的原因。下面将...

yingxiongtnt的专栏 306

从零到一:Abaqus与Matlab联合仿真的自动化流程构建指南

本文详细介绍了如何构建Abaqus与Matlab联合仿真的自动化流程,涵盖基础架构设计、关键接口技术实现、结果提取与处理技术以及高级参数化优化流程。通过Python脚本作为桥梁,实现数据传递和任务控制,帮助工程师提升仿真效率。特别强调了版本兼容性、异常处理和性能监控等实用技巧。

weixin_29090089的博客 610

《哥谭神话-工程篇》01.Palantir 平台架构解析-混乱数据如何转化唯一真相源?

Palantir 平台的架构哲学可以概括为将洞察落地为行动,其核心是将“获取唯一真相”能力深度嵌入现有的、复杂的工作流程中,成为提升运营效率和决策质量的倍增器。

895

前端——数组

目录 一、数组 1、创建数组 (1)使用 new Array( ) (2)、使用字面量 [ ] 2、访问数组元素 ​3、数组的属性 二、二维数组 1、创建二维数组 (1)使用new Array( )创建 (2)通过'[ ]'创建 2、访问二维数组元素 3、二维数组的转置 一、数组 1、创建数组 数组:是内存中一块连续的存储单元。 (1)使用 new Array( ) 格式:var arr = new Array( ) <script> ...

weixin_61561066的博客 3945

让openclaw接入web端的deepseek或着qwen,使用无限token

🪟 Windows: 提供原生的 PowerShell 一键安装支持!配置过程和官方版本是相同的,唯一的区别就是再选则model时要选择带Browser字样的deepseek或者qwen。安装之前需要先清理官方版本的安装痕迹,否则openclaw版本跳转不到这个中文版本。因为此版本与官方版本存在代差,在配置飞书时可能会出现无法安装飞书的情况。剩下的配置保持和官方版本一致操作即可。选中之后需要进行一次网页端的登录。登录后会出现可选择的model。安装完成后会跳到这个中文界面。涉及到接入飞书机器人的操作。

z1872385的博客 302

javaScript 03 数组详解(数组声明/基础操作)

本文主讲数组在javaScript中的声明、使用方法的要点。数组的增删改查,遍历/求极值等相关操作

嗨,朋友你好!我是前端领域的工作者 1292

【干货分享】高通 SA8295P PCB 设计规范指南

高通SA8295P芯片是第四代骁龙汽车数字座舱平台的核心组件,采用5nm工艺,集成高性能CPU/GPU和30TOPS算力的NPU。文章详细介绍了该芯片各接口的layout设计规范,包括USB3.1/2.0、eDP/DP、MIPI CSI/DSI、PCIe Gen3等接口的阻抗、损耗、延时等关键指标要求,为新能源汽车电子设计提供重要参考。

一只豌豆象的博客 258

PyTorch 面试题及参考答案(精选100道)

模块是 PyTorch 中用于自动求导的核心模块。它为张量上的所有操作提供了自动求导的功能。在深度学习中,反向传播是一种用于计算损失函数相对于模型参数的梯度的算法。通过梯度,我们可以使用优化算法(如随机梯度下降)来更新模型的参数,从而最小化损失函数。模块的主要作用就是自动计算这些梯度。当我们创建一个张量时,如果将其属性设置为True,那么 PyTorch 会跟踪该张量上的所有操作。在完成前向传播计算出损失函数后,调用方法,模块会自动根据链式法则反向传播计算出所有需要求导的张量的梯度。

大模型大数据攻城狮的专栏 1678

【前端学习】 JavaScript 之数组 (Array)

前端 JavaScript JS 开发 编程 小白 新手入门 零基础 代码 数组 Array 实例方法 pop() push() shift() unshift() slice() reverse() sort() concat() indexOf() join() find() findIndex() includes() toString() some() every() fill() splice() forEach() map() filter() flat() reduce()

LZwarning0215的博客 1258

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

web前端学习笔记18-js对象原型3(Array对象-数组及数组相关函数)

一、Array对象原型 数组就是一组数据,js中没有数组这种数据类型,数组是对象创建的。 【下标 / 键】用于区分数组中不同数值的标志就是下标 【值】数组中每一个数据就是值 【键值对 / 元素】键+值就是键值对 【索引数组】以数字作为下标的数组 【关联数组】以字符串作为下标的数组 【注】js中只有索引数组,且索引值只能为从0开始的正向数,没有关联数组 var ar=['张三','李四','王五','小六']; console.log(ar[2]); //下标不能为负数 二、数组的操作 // 数组的操作—

WPF调用摄像头(借用WPFMediaKit库) 322

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JavaScript- 2.5 内置对象ARRAY

本文介绍了JavaScript内置对象Array的详细使用方法,包括数组创建、属性、各种操作方法(修改、遍历、搜索排序等)、类型检测以及性能优化建议。文章通过代码示例演示了数组的基本操作,如push/pop、forEach/map、sort/find等常用方法,并特别说明了类数组对象转换和稀疏数组的特性。最后提供了HTML实践代码,展示如何创建和操作数组。本文适合前端初学者作为参考资料,帮助掌握JavaScript数组的核心功能。

HRDMN的博客 930

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JS之Array数组补充(ES6)

本次内容是对于上次的Js之中Array(数组)方法解读的补充,是针对于Array数组的ES6知识,很凑巧的是,在前段时间总结完ES5方法之后,我的ES6语法也刚好看到Array数组的内容,所以无缝衔接了起来。 本次内容更多适用与大三或者大四已经有一定JavaScript基础的进阶教程。对于走前端开发的程序猿来说,ES6是不可避免的,希望各位与博主共勉,且将新火试新茶。诗酒趁年华。 话不多说,上干货...

weixin_44220680的博客 4075

JavaScript 中实现等分数组

最近开源了一个 Vue 组件,还不够完善,欢迎大家来一起完善它,也希望大家能给个 star 支持一下,谢谢各位了。 github 地址:https://github.com/qq449245884/vue-okr-tree 在本教程中,我们来学习一下如何使用Array.splice()方法将数组等分,还会讲一下,Array.splice() 和 Array.slice() 它们之间的不同之处。 1. 将数组分为两个相等的部分 我们可以分两步将数组分成两半: 使用length/2和Math.ceil(

承接各种网站建设开发定制 666

JavaScript基本知识——学习笔记之数组api总结,在线web前端开发

数组方法是否改变原数组或返回新数组一、改变原数组的方法二、返回新数组的方法Array.of()三、其他数组方法的使用场景一、伪数组转化为数组//es5语法//[1,2,3]//es6语法//[1,2,3]//[1,2,3]

975

【面试必会,如何在 JavaScript 中等分数组(1),前端开发关键技术

面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!9)]一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

m0_57473261的博客 410

js数组基础,数组方法介绍

数组文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array。// 沙和尚 获取数组中的倒数第二个元素。let result = arr.concat(arr2,["牛魔王","铁扇公主"]);const arr = ["孙悟空","猪八戒","沙和尚","唐僧"];console.log('原数组arr',arr);const arr2 = ["白骨精","蜘蛛精","玉兔精"];

lihouliang2021的博客 372

探索JavaScript数组的艺术:js-array-operations项目深度剖析

探索JavaScript数组的艺术:js-array-operations项目深度剖析 在编程的浩瀚宇宙中,JavaScript以其灵活性和广泛性占据了重要的一席之地。而在JavaScript的世界里,数组操作是日常开发中不可或缺的一部分。今天,我们要向您推荐一个精巧实用的开源项目——js-array-operations,它解锁了探索JavaScript数组的20种新方式。 项目介绍 js-a...

gitblog_00141的博客 1002

拿数组的值 前端_前端开发JavaScript干货知识点汇总

很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊?其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关键!不过JavaScript的知识点比较多,一篇文章的内容没办法讲完。今天就来点知识点难度干货,大家来了解一下JavaScript的几个基础难点知识,给大家查漏补缺,不懂的知识可以去查一下,或者也可以私...

weixin_31926457的博客 140

JavaScript中数组常用方法的总结

JavaScript中数组Array常用的方法总结 标签(空格分隔): JavaScript ECMAScript数组给我们提供了许多常用的方法,便于我们对数组进行操作,下面,就来总结一下这些方法。 pop()和push() 这两个方法可以说是一对互斥的方法。push()可以接受任意数量的参数,并将他们添加到数组的末尾,同事返回修改后数组的长度,而pop()则从数组末尾移除最后一项,...

angquanqu6497的博客 242

前端深入之js篇丨Array数组操作从入门到成神Up Up Up,持续更新中

写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组。 数组基本操作 创建数组 var arr1 = []; //通过字面量的方式创建一个没有元素的空数组 var arr2 = new Array(); //通过构造函数的方式创建一个空数组 var ...

qq_39596036的博客 311

前端学习笔记202307学习笔记第六十七天-前端面试-array-some和array-every

前端

qq_41632427的博客 53

【从头学前端】13-JavaScript中的Array对象方法详解

Hello 大家好,我是彼岸繁華????,一个坚信努力可以改变命运的前端????????‍????,如果有幸写的文章可以得到你的青睐,万分有幸~ 编写不易转载请获得允许 写在前面 本篇文章我们将来学习JavaScript中的Array对象,通过本篇文章的学习可以掌握什么知识呢?如下图: JavaScript中的数组,也就是Array对象,该对象提供了一系列属性和方法来进行数组的操作,具体操作如下所示: 检测是否为数组 转换方法 进出栈方法 队列方法 拼接方法 操作方法 递

一碗周 244
上一篇: spring MVC原理
下一篇: 【前端学习】javascript正则表达式和字符串RegExp and String(一)
唐小新
博客等级 码龄18年 89粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值