Js数组总结

从零开始之stm32之CAN通信 CAN通信极简教程(小白友好版),从小白的视角了解并实现简单的STM32F103的CAN通信,直接上手。 阅读详情

Array类型

创建方式

1.Array构造函数

var colors = new Array();
   var colors = Array(3);//创建一个包含3项的数组

2.数组字面量表示法
数组字面量由一对包含数组项的方括号表示,多个数组项之间以逗号隔开。

var colors = ["red", "blue", "green"];

检测数组

经典问题:确定某个对象是不是数组
对于一个网页,或者是一个全局作用域而言,使用instanceof操作符即可:

if (value instanceof Array){
    //对数组执行某些操作
}

当网页中具有两个以上不同的全局执行环境时,ECMAScript新增了Array.isArray()方法。
这个方法的目的是最终确定某个值到底是不是数组,而不管是在哪个全局执行环境中创建的
用法如下:

if (Array.isArray(value)){
            //对数组执行某些操作
    }

转换方法

所有的对象都具有 toLocaleString()、toString()、valueOf()方法。
调用toString()方法会返回由数组中每个值的字符串形式拼接而成的一个逗号分隔的字符串。
调用valueOf()返回的还是数组。

栈方法

push()、pop()
push()方法接收任意数量的参数,把他们逐个添加都数组的末尾,并返回修改后数组的长度。
pop()方法从数组末尾移除最后一项,减少数组的length值,然后返回移除的项
示例如下:

var array = ["red","green"];
    array.push("black");
    console.log(array);   // ["red", "green", "black"]
    array.pop();
    console.log(array);   // ["red", "green"]
    array.pop("red");  //pop()只能获取最后一项,即使参数选项不是最后一个
    console.log(array);   //["red"]

队列方法

shift()方法能够移除数组中的第一个项并且返回该项,同时数组长度减1
结合使用shift()和push()方法,可以像队列一样使用数组。

unshift()方法能在数组前端添加人一个项并且返回新数组的长度。
所以同时使用unshift()和pop()方法,可以从相反的方向模拟队列,即在数组的前端添加项,从数组的末端移除项。

重排序方法

reverse()和sort()方法
reverse()方法会反转数组项的顺序
示例:

var values = [1,2,3,4,5];
values.reverse();
console.log(values); // 5,4,3,2,1

sort()方法默认按照升序排列数组项——即最小的值位于最前面,最大的值排在最后面。
为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。
即使数组中的每一项都是数值,sort()方法比较的也是字符串。

var values = [0,1,5,10,15];
values.sort();
console.log(values);   //0,1,10,15,5

因为这种排序方式的存在,所以sort()方法可以接收一个比较函数作为参数,以便指出那个值位于那个值的前面。
简单的比较函数:

function compare(value1,value2){
    if(value1 < value2){
        return -1;
}
    if(value1 > value2){
        return 1;
}
        return 0;
}

说明:比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,如果两个参数相等,则返回0,如果第一个参数应该位于第二个参数之后,则返回一个正数。
这个比较函数适用于大多数数据类型,只要将其作为参数传递给sort()即可
reverse()和sort()方法返回值是经过排序之后的数组。

对于数值类型或者其valueOf()方法会返回数值类型的对象类型,比较函数可以简化为:

function compare(value1,value2){
    return value2 - value1;
}

操作方法

concat()方法“拼接”

可以基于当前数组中的所有项创建一个新数组。
具体来说,这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。
在没有给concat()方法传递参数的情况下,它只是复制当前数组并且返回副本。
例如:

var colors = ["red","green","blue"];
var colors2 = colors.concat("yellow",["black","brown"]);

console.log(colors);  //red,green,blue
console.log(colors2);   //red,green,yellow,black,brown

从上例可以看出concat拼接数组时会创建一个副本,所以colors中的值是不变的。

slice()方法“截取”

能够基于当前数组中的一个或者多个项创建一个新数组。slice()方法接收一或两个参数,即要返回项的起始和结束位置。

如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项
slice方法不会影响原始数组。

var colors = ["red","green","blue","yellow","purple"];
var color2 = colors.slice(1);
var color3 = colors.slice(1,4);
console.log(color2);  //green,blue,yellow,purple
console.log(color3);  //green,blue,yellow

Tips:
- 如果slice()方法的参数中有一个负数,则用数组长度加上该参数确定相应的位置
- 如果结束位置小于起始位置,则返回空数组。

splice()方法
参数说明:(起始位置,要删除的项数,要插入的任意数量的项)
splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除的项,则返回空数组)

位置方法

indexOf()和lastIndexOf()都接收两个参数:要查找的项和表示查找起点位置的索引。
indexOf()方法从数组的开头开始向后查找,lastIndexOf()方法从数组的末尾开始向前查找。
这两个方法都返回要查找的项在数组中的位置,没找到的情况返回-1

迭代方法

  • every(): 如果该函数每一项都返回true,则返回true
  • filter() :返回该函数会返回true的项组成的数组
  • forEach():该方法没有返回值
  • map():返回每次函数调用结果组成的额数组
  • some():如果该函数对任一项返回true,则返回true

    以上方法都不会修改数组中包含的值
    每个方法都接收两个参数:要在每一项上运行的函数和运行该函数的作用域对象 ——影响this的值。
    传入这些方法中的函数接收三个参数:数组项的值,该项在数组中的位置和数组对象本身。

KEIL MDK实战:如何用fromelf工具解析STM32的ELF文件结构(附完整命令行) 本文详细介绍了如何使用KEIL MDK中的fromelf工具解析STM32的ELF文件结构,包括内存段分析、符号表追踪和反汇编关键函数等实战技巧。通过完整的命令行示例,帮助嵌入式开发者优化内存占用、排查运行时问题,并提升STM32项目的开发效率。 阅读详情

相关推荐

Xilinx Vivado vitis IDE launch Failed \ Web installer client Obsolete 怎么办

Xilinx vitis_IDE failed Web installer client Obsolete

weixin_44820962的博客 8644

JavaScript 数组方法小结

Array,ECMAScript的引用类型,数组。ECMAScript数组都是有序列表,而且每一项都可以保存任何类型的数据。数组的大小根据内容自动扩展。 创建数组 创建数组的两种方式: 第一种:: var colors = new Array(); 例如: var colors = new Array(3); //创建一个包含3项的数组 var colors = new Array("red","green","yellow"); //创建包含3个字符串的数组 //或者 var

DOM曼珠沙华的博客 310

实战复盘:如何用Frida脚本绕过某书APP的libmsaoaidsec.so检测(附完整Hook代码)

本文深入探讨了如何利用Frida脚本绕过某书APP通过libmsaoaidsec.so实现的反Frida检测机制。通过分析动态链接过程中的关键节点和检测模式,提供了两种实战验证的绕过方案:动态Hook关键链接器函数和静态Patch SO文件。文章还分享了进阶对抗策略和调试技巧,帮助安全研究人员有效应对现代移动安全防护挑战。

weixin_42706667的博客 218

JavaScript笔记(6)数组

我(0)站在你(1)左侧却像隔着银河

weixin_43493559的博客 1094

保姆级教程:用HFSS 2023 R2搞定GPS右旋圆极化微带天线(从建模到优化全流程)

本文提供了一份详细的HFSS 2023 R2教程,指导读者从零开始设计GPS右旋圆极化微带天线。涵盖建模、仿真和优化全流程,特别关注圆极化特性的实现与优化,帮助工程师快速掌握天线设计的关键技术。

weixin_42557830的博客 169

Windows11上CUDA 12.3配PyTorch踩坑记:一条官网命令救了我的GPU加速

本文详细介绍了在Windows 11上配置CUDA 12.3与PyTorch的完整指南,包括环境准备、安装要点、兼容性解决方案和性能验证。通过官方推荐的conda命令和实用技巧,帮助开发者解决常见问题,实现高效的GPU加速,提升深度学习开发效率。

weixin_42528974的博客 109

Js 数组总结

数组怎么用? 有三种: 1)var a=[]; 2)   var a=new Array(); 3)   var a = [0,0,0]; 访问元素:数组名+下标 a[0]    a[3] 需要注意下标是从0开始的! 所以在使用的时候需要注意越界的问题,比如5个元素的数组,那么它的下标范围为[0,4]不包括5,5已经越界了! 数组到到底是什么?

梁山伯_的博客 2867

纯JS实现SM3加密算法(兼容IE浏览器)

纯JS实现SM3加密,IE、谷歌、火狐等浏览器可以直接使用。

qianpou的博客 7353

JS数组方法总结大全

js数组方法总结 JavaScript语言里给数组提供了很多好用的方法对数组进行操作,用起来非常方便,在此总结记录一下。 一.数组创建 1.使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组 var arr2 = new Array(10); // 创建一个包含10项的数组 var arr3 = new Array("pink","teacher"); // 创建一个包含2个字符串的数组 2.使用字面量表示法: var arr4 = []; //创建一个空

硬澳钾的博客 4255

windows版kafka异常java.nio.file.FileSystemException另一个程序正在使用此文件,进程无法访问

环境 现象 原因 解决方法 参考

山水牧羊 3847

图像质量评估(5) -- 畸变(Distortion)

当图像中原本应该是直线的地方看起来发生了不自然的变形或扭曲时,我们称为图像畸变。有三种类型的镜头畸变:桶形畸变(后文使用英文barrel),枕形畸变(后文使用pincushion)和胡子畸变(后文使用英文wavef或mustache,这种畸变里包含了桶形畸变和枕形畸变)。有一个重要的点需要注意,根据透镜的类型以及透镜是否能够从相机中移除等条件不同,畸变会有不同的表现。 总的来说,旋转对称光学系统功能上会产生和物体几何相似的图形。但也有少数特殊的系统是例外,例如鱼眼镜头,这种镜头几何是故意设计为

vivo01的专栏 2万+

JS数组总结(一)

    除Object外,Array恐怕是ECMAScript中最常见的类型了,相比于其他语言来说,ECMAScript的数组中的每一项可以存放不同类型的值。    首先数组的length不只是只读的,可以通过它在数组的末尾添加新项或移除项。        添加新项:var arr = ['a','b','c'] arr[arr.length] = 'd';//此时arr= ['a','b','c...

Ella_Yan的博客 282

22、嵌入式软件随机延迟生成与加密算法防护技术

本文探讨了嵌入式软件中的随机延迟生成方法与块密码软件实现的高阶掩码及洗牌技术。重点介绍了浮动均值延迟生成方法,其在8位AVR平台上的实现效率为Θ(1),显著提升了抗相关功率分析(CPA)攻击的能力,相比传统方法更安全且轻量。同时,分析了高阶掩码与洗牌技术结合的方案,通过理论建模量化其对高级差分功率分析(DPA)攻击的抵抗能力,并以AES为例展示了该方案的应用流程。最后对比了不同防护技术在安全性与开销之间的权衡,为实际应用中选择合适的安全策略提供了依据。未来可进一步优化实现效率并融合多种防护手段以应对复杂安全

fern8的博客 88

JavaScript——JS数组

JavaScript——JS数组

2303_79975149的博客 1899

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【JavaScript—数组】详解js数组一篇文章吃透js-数组

这篇文章将教会你js中的数组,包括了数组的概念,如何进行筛选数组元素,如何添加新数组 以及用两种不同的方式进行数组的筛选,一文即可搞懂js-数组

zhaochen1127的博客 2205

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JavaScript学习手册五:JS数组

第1关:数组的创建、读写和长度 第1关参考代码: 第2关:数组元素的增减 第2关参考代码: 第3关:数组的遍历和多维数组 第3关参考代码: 第4关:数组的常用方法 第4关参考代码: 第5关:数组的应用——内排序 第5关参考代码:

m0_65391975的博客 7484

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【一篇搞定JS数组】JavaScript数组使用详解

与其他编程语言中的数组不同的是:js数组是js中的一种特殊的(内置)对象,索引更像是属性名,只是刚好是整数。在js中,数组是无类型限制的(即数组的元素可以是任意类型,包括自定义对象)。ja数组是基于零且使用32位数值索引的(从最小0到最大2^32-2)js数组是动态的js数组可以是稀疏的(即元素不一定有连续的索引,中间可能有缝隙)对于稀疏数组,length是大于所有元素的最高索引。数组从Array.prototype继承属性,这个原型定义了很多数组操作方法。(并且很多都是泛型的)ES6新增。

undefined 7044

js 取得数组下标_JavaScript 数组 详解

前言在开发中,数组的使用非常多,会涉及很多的 api 的使用,但是除了几个最常用的 api 之外,其他的 api 用完之后经常就会忘掉了,再用的时候还要查一下。所以就希望系统的总结梳理一下这块内容,写下这篇文章,如果喜欢的话,可以 点赞/收藏,支持一下,希望看完会对大家有帮助。本文篇幅较长,建议点赞保存再看,也便于日后翻阅。创建数组语法[element1, element2, element3,...

weixin_39585675的博客 8102

js 数组 改变长度_【JavaScript数组【Array】

数组对象一种特殊的对象JS其实没有真正的数组,只是用对象模拟数组JS的数组不是典型数组典型的数组元素的数据类型相同使用连续的内存存储通过数字下标获取元素JS的数组不是这样元素的数据类型可以不同内存不一定是连续的(对象是随机存储的)不能通过数字下标,而是通过字符串下标这意味着数组可以有任何key比如let arr=[1,2,3]arr['xxx']=1创建一个数组新建let 转化let 伪数组let...

weixin_39607240的博客 1358

【Javascript】JS中对于数组的常用操作汇总

在实际应用中,经常需要根据具体需求编写比较函数来实现自定义排序逻辑,比如按照对象的某个属性排序对象数组。map()、find()、some()、sort()

VT_馒头的博客 1737

详解JavaScript的数组,JS数组方法大全

什么是数组 数组是值得有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。 js的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组。 数组元素的索引不一定要连续,元素之间可以有空隙,叫做稀疏数组 。 每个数组都具有一个length属性。 针对非稀疏数组,length属性就是数组元素的个数,针对稀疏数组,元素的length属性比所...

wfly blog 880

【JS】js数组分组,javascript实现数组的按属性分组

项目代码中有很多时候需要按一定的条件实现按属性分组。

余浩的博客 1万+

JavaScript-JS数组方法有哪些

join() reveres() sort() concat() slice() splice() push()和pop() unshit()和shit() toString和toLocaleString() forEach() map() filter() every和some() reduce()和reduceRight()

hnyanzijun1的博客 1092

js二维数组_Javascript数组

数组的概念:引用类型的对象。本质:内存中存储多个数据的空间,再取个名字。数据结构:数据结构不同,擅长的操作不同。数组特点:便于数据的查找与维护。数组的创建:方法1:var 数组名=【元素1,元素2,元素3......元素n】;注意:可以创建空数组,建议创建同时赋值!方式2:var 数组名=new Array();数组的使用:下标:每个元素都有一个对于的房间号,默认从0开始,逐一递增。元素:其实就是...

weixin_39720807的博客 2245

js数组分组,javascript实现数组的按属性分组

根据具体的需求和项目环境,选择适合的方法可以提高代码的可读性和性能。对于简单的分组需求,可以选择forEach()方法或lodash库的groupBy()方法;对于复杂的分组需求,可以选择reduce()方法、Map对象或ES6的Map和箭头函数。在JavaScript中,有多种方法可以对数组按属性进行分组。以上是6种常见的方法,它们都能够按照指定属性对数组进行分组。

一步一个脚印,踏实努力,向着目标前进 6220

Vue.js 中 v-for 指令与 JavaScript 数组方法

Vue.js 中 v-for 指令与 JavaScript 数组方法

一起coding,一起嗨。 1150
上一篇: AngularJS常用指令
下一篇: Js字符串常用操作总结
Crazier_qi
博客等级 码龄11年 13粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值