js数组相关操作

20、JavaScript数组操作与相关对象全解析 本文全面解析了JavaScript中数组的各种操作方法,包括数组切片、拼接、排序、首尾元素操作、搜索、谓词评估、转换为字符串,以及流式处理等。此外,还介绍了类数组对象、类型化数组和ArrayBuffer的使用,探讨了数组操作的性能优化策略、常见错误及解决方法、实际应用场景、链式调用以及异步编程中的数组处理方式。通过详细的示例代码和流程图,帮助开发者深入理解并高效应用JavaScript数组操作。 阅读详情

一、创建一个新的数组有两种方法:

1. 字面量表示法

const array = ['red', 'green', 'blue'];

2. 构造函数创建

const array = new Array();

二、向数组中插入/删除元素

删除数组中的第一个/最后一个元素 

// shift删除数组的第一个元素,并返回第一个元素的值
const first = ['red', 'green', 'blue'].shift();

// pop删除数组的最后一个元素,并返回最后一个元素的值
const last = ['red', 'green', 'blue'].pop();

向数组中插入第一个/最后一个元素

// 将元素插入到数组最后,并返回数组长度
const length = ['red', 'green', 'blue'].push('white');

// 将元素出入到数组最前,并返回数组长度
const length = ['red', 'green', 'blue'].unshift('white');

三、判断某一个对象是否为数组

const isArray = Array.isArray(array);

四、将非数组的list转换为数组

const array = Array.from(nodeList);

五、获取数组中的部分元素

// slice方法接受两个参数,第一个参数表示起点的位置,第二个参数表示终点的位置
// 当只有一个参数的时候表示从起点到数组的最后
// slice返回包含起点但不包含终点的一个新数组,不会改变原数组
const colors = ['red', 'green', 'blue', 'yellow', 'purple'];
const colors2 = slice(1);    // green, blue, yellow, purple
const colors3 = slice(1, 4); // green, blue, yellow


// splice方法始终返回一个数组,包含从原始数组中删除的项
// splice可以删除从数组指定位置开始的若干项
// 接受两个参数,要删除的第一项的位置和删除的项数
const colors = ['red', 'green', 'blue'];
let removed = colors.splice(0, 1);   // red

// splice可以向指定位置插入任意数量的项
// 接受三个参数,起始位置,要删除的项数(0),要插入的项
removed = colors.splice(1, 0, 'yellow', 'orange');  // []
console.log(colors);       // green, yellow, orange, blue

// splice可以向指定的位置插入任意数量的项,同时删除任意数量的项
// 接受三个参数,起始位置,要删除的项数,要插入的项
removed = colors.splice(1, 1, 'red', 'purple');     // yellow
console.log(colors);       // green, red, purple, orange, blue

六、查找数组中某一项的位置

// indexOf表示从数组的开头向后查找
// lastIndexOf表示从数组的末尾开始向前查找
// 他们都接受两个参数:要查找的项,查找起点位置的索引(可选)
const numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];

console.log(numbers.indexOf(4));         // 3
console.log(numbers.lastIndexOf(4));     // 5

console.log(numbers.indexOf(4, 4));      // 5
console.log(numbers.lastIndexOf(4,4));  // 3

七、迭代方法

数组有五个迭代函数,每个迭代函数接受两个参数,要在每一项上运行的函数和运行该函数的作用域对象(可选) 。

传入的函数接受三个参数,数组中项的值,该项在数组中的位置,数组对象本身。

这些迭代函数都不会修改数组中包含的值。

const numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];

// every对数组的每一项运行给定函数,如果所有项的返回值都是true,那么every函数的返回值才是true
// every可以用来判断数组中所有项是否满足某些条件
numbers.every((item, index, array) => item > 2);   // false

// some对数组的每一项运行给定函数,如果有一项的返回值是true,那么some函数的返回值就是true
// some可以用来判断数组中是否有满足条件的项
numbers.some((item, index, array) => item > 2);   // true

// filter对数组的每一项运行给定函数,该函数返回运行结果为true的项组成的数组
// filter可以用来筛选数组中满足条件的项
numbers.filter((item, index, array) => item > 2);   // [3, 4, 5, 4, 3]

// forEach对数组的每一项运行给定函数,该函数没有返回值
// forEach可以用来遍历数组
numbers.forEach((item, index, array) => {});

// map对数组的每一项运行给定函数,该函数返回每次函数调用的结果组成的数组
// map可以用来遍历数组,对数组每一项进行某些操作
numbers.map((item, index, array) => item * 2 );

八、归并方法

数组有两个归并数组的方法:reduce 和 reduceRight。这两个方法会迭代数组的所有项,然后构建一个最终的返回值。

reduce方法从数组的第一项开始,向后遍历,reduceRight从数组的最后一项开始,向前遍历。

// 两个方法都接受两个参数:在每一项上调用的函数,作为归并基础的初始值(可选)
// 传入的函数接受四个参数:前一个值,当前值,项的索引,数组对象
// 这个函数的返回值都会作为第一个参数自动传给下一项
const value = [1, 2, 3, 4, 5];
const sum = value.reduce((prev, cur, index, array) => prev + cur);  // 15
const sumRight = value.reduceRight((prev, cur, index, array) => prev + cur);  // 15

// reduce和reduceRight可以用来计算数组中元素出现次数
const colors = ['red', 'green', 'blue', 'yellow', 'red', 'blue'];
const colorNum = colors.reduce((prev, cur) => {
    if (cur in prev) {
        prev[cur] += 1;        
    } else {
        prev[cur] = 1;
    }
    return prev;
}, {});               // {'red': 2, 'green': 1, 'blue': 2, 'yellow': 1}

// reduce和reduceRight可以用来去除数组中重复元素
const value = [1, 2, 3, 4, 5, 4, 3, 2, 1];
const newValue = value.reduce((prev, cur) => {
    if (!prev.includes(cur)) {
        return prev.concat(cur);
    } else {
        return prev;
    }
}, []);               // [1, 2, 3, 4, 5]

 

Moveit +Gazebo:搭建单臂机械臂仿真平台 阅读详情

相关推荐

三甲医院网络架构与安全建设实战

华为OceanStor] [华为OceanStor][PACS存储双活] [HIS数据库同步]患者隐私 数据脱敏 天清Web防火墙动态脱敏策略。主数据中心 --[OTV专线]-- 备数据中心。实现医疗业务网/卫生专网/互联网三网隔离。核心业务配置(华为CE6865)自动备份配置(每天02:00)安全事件响应(30分钟SLA)漏洞扫描(每周日00:00)实现医疗物联网统一接入管控。五、等保2.0合规关键配置。堡垒机登录(双因素认证)四、医疗物联网安全方案。

有小小的远大抱负 1911

js替换两个数组对象(json)中指定的key:value(键值对中的value)

需求:将旧数组对象中的{digitNum: 22}替换为新数组对象中的{digitNum: 2}… js方法比对: 前提要求两个数组对象中每一条数据都有一个唯一标识如:id 实现思路:将两个数组对象id进行比对,id相同则将旧值替换为新值 mounted() { getDecimals().then(res => { //获取新json this.orderList = this.getArrDifSameValue(this.orderList, res.data) //传值给自

HanXiaoXi_yeal的博客 4386

银河麒麟V10SP1系统盘瘦身指南:如何制作一个只含必需软件的轻量级安装镜像

本文详细介绍了银河麒麟V10SP1系统盘瘦身的完整流程,从依赖分析到最小化镜像构建,帮助用户创建只含必需软件的轻量级安装镜像。通过智能包筛选、KickStart定制和性能优化,显著减少ISO体积和部署时间,适用于服务器批量部署等场景。

weixin_26765287的博客 404

Javascript 学习笔记 《对象与数组 转换》

Javascript 学习笔记 Map 和 Array 转换对象 2 数组取 key 数组取 value 数组格式化后输出数组 2 对象 对象 2 数组 取 key 数组 Object.keys(map); 取 value 数组 (3) [1, 2, 3]; 格式化后输出 对象:{"a":1,"b":2,"c":3} 数组:[{"name":"a","value":1}, {"name":"b","value":2}, {"name":"c","value":3}] var map = {"a":1,

灵台方寸山斜月三星洞 511

STM32F103新手必看:0.96寸OLED屏幕从接线到动态显示全攻略(附IIC避坑指南)

本文为STM32F103新手提供了0.96寸OLED屏幕从硬件接线到软件驱动的完整实战指南。重点解析了IIC通信的时序、设备地址(0x78/0x7A)的常见陷阱,并详细演示了如何实现字符显示与平滑滚动显示等动态效果,帮助开发者快速上手并避开常见调试难题。

stone的博客 556

别再只怪贴片厂了!从MLCC内部裂纹,看懂物料质量与工艺应力的博弈

本文深入分析了MLCC内部裂纹的失效原因,提供了从裂纹形态学到生产全流程的失效风险地图的完整分析框架。通过实战案例和检测技术组合,帮助工程师精准锁定MLCC失效背后的真凶,优化物料质量和工艺应力管理。

weixin_33122947的博客 293

cpp map 获取所有 key_程序员:我们来聊聊 Map 接口的常用方法

一、map里面的添加、删除、修改方法Object put(Object key,Object value) :将 指定 key value 添加到 或修改 当前 map 对象中void putAll(Map m) : 将 m 中的所有 key value 对存放到当前 map 中Object remove(Object key) key):移除指定 key 的 key value 对,并返回 va...

weixin_39814482的博客 887

uniapp - 实现集成调用zebra斑马打印机+打印标签+打印二维码详细实例代码,通过蓝牙连接打印机打印与通过打印机IP和端口两种方式适配斑马打印机(全平台兼容H5、微信小程序、苹果安卓App)

uniapp适配斑马打印机 实现标签打印,uniapp适配斑马打印机实现标签打印,uniapp调用zebra斑马打印机打印标签,uniApp连接传统蓝牙的斑马打印机打印,实现标签打印功能uniapp 蓝牙连接斑马打印机发送zpl指令打印,适配斑马(Zebra)牌打印机,小程序调用蓝牙打印机完整代码,uniapp 打印机wifi链接 蓝牙链接,uniapp斑马打印机,实现二维码标签展示以及打印,APP端连接打印机打印小票和标签,uniapp使用斑马打印中文不出来,打印机连接不上,打印没反应怎么办,打印报错,斑

🏆 前端领域优质创作者 1万+

日常开发记录-js 修改数组对象中指定的属性值

思路:先过滤+再插入 {label:'李四',value:1} 更改为{label:'测试',value:1} const arr = [{label: '张三', value: 0},{label: '李四', value: 1},{label: '王五', value: 2}] // filter不会改变原数组 let data = arr.filter(item =&...

machine_vision123的博客 658

OpenFeign整合Sentinel实现熔断降级

常用于实现熔断降级的框架有Hystrix、Sentinel,我们常说的Spring Cloud项目说的其实是Spring Cloud Netflix,Hystrix以及前面学习过的Ribbon都是Netflix系的家族成员,所以使用Hystrix可以非常简单的与当前项目中使用到的OpenFeign、Ribbon整合,但笔者并没有选择Hystrix,而是选择阿里系的Sentinel。 为什么选择Sentinel而不是Hystrix?从接入简单考虑可能选择Hystrix是不错的选择,但笔者对Hyst...

吴就业 6718

基于RK3588平台的高分辨率多摄像头系统深度优化:从48M单摄到双摄分时复用的完整解决方案

本文深入解析了RK3588平台的高分辨率摄像头实现方案。重点介绍了:1)RK3588的MIPI PHY硬件架构,包括DCPHY和DPHY的资源配置及工作模式;2)双ISP合成技术,通过并行处理提升48M高分辨率图像的处理能力;3)以OV50C40传感器为例,详细展示了48M单摄系统的硬件连接、I2C设备配置和关键参数设置。文章为开发者提供了从硬件连接到软件配置的完整技术方案,有助于实现高性能嵌入式视觉系统。

FJN110的博客 675

JavaScript利用函数设置和修改文本框的value信息-----JavaScript

JavaScript利用函数设置和修改文本框的value信息-----JavaScript

在经历了无数个黑夜之后,我决定自己成为太阳 544

使用Transformer实现自动调制识别(RML2018)

image_size = 1024 # resize重置输入大小patch_size = 16 # 从输入图片中将被提取的块大小# 分成 num_patches 个块num_patches = (image_size // patch_size) #(72/6)**2 横着裁剪),],return x})

QAQIknow的博客 1324

JS数组相关操作

本文介绍了JavaScript数组常用操作方法,主要包括:1)添加元素方法push()和unshift();2)删除元素方法pop()、shift()和splice();3)查找元素方法indexOf()、lastIndexOf()、find()和findIndex();4)排序和翻转方法sort()和reverse()。每种方法都配有代码示例说明其使用方式和返回值特点,如splice()可删除、替换或添加元素,删除元素时返回被删除元素的数组等。这些方法涵盖了数组操作的主要场景,是处理数组数据的实用工具。

日晞的博客 171

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

JavaScript数组的相关操作

【代码】JavaScript数组的相关操作。

weixin_56093857的博客 158

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

js定义数组及数组的相关操作

js定义数组:    空数组 var arr=[];    数字数组 var arr=[1,2,6];    对象数组 var arr=[{Name:"小书童",Age:1},{Name:"奔跑的蜗牛",Age:6}];   访问数组:   var arr=[1,2,6];   var  x=arr[0];     结果  x等于 1   var arr=[{Name:"小书童"...

logspool的博客 5609

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JavaScript数组及相关操作

1、声明与定义数组 2、push(向后添加数组)、unshift(向前添加数组) 3、pop(向后删除数组)、shift(向前删除数组) 4、splice数组的删除与添加 5、concat数组拼接 <script> //定义数组的方法 //1,var arr1 = new Array(); //arr1[0] = 10; //2,var arr2 = new Array(3);//表示的是定义一个长度为3的数组,赋值的话也可以采用上面的方法 //3,var

weixin_39218464的博客 589

JS数组的相关操作

数组类型检测 let arr = [1,2,15] Array.isArray(arr) // true 数组转字符串 let arr = ['a','b','c'] arr.toString() //a,b,c String(arr) //a,b,c arr.join("") //abc arr.join(",") //a,b,c 字符串转数组 let str = "daqianduan" str.split("") // ["daqianduan"] Array.from(str) // ["d"

kaiup的博客 337

最全JS中和数组相关的操作

JavaScript中和数组相关的操作: 创建,增删改查,遍历,排序,转换,位置,迭代 一、创建: (1) let arr1 = [18,'fine',true]; (2) let arr1 = new Array(); arr1 = ["南湾湖","鸡公山","新林玉露","山茶油","板栗"]; (3) let arr3 = []; arr3[0] = 12; arr3[1] = 13; arr3[2] = 14; 二、增删改查: (1)增加: (2)删除: ..

前端-尔嵘 489

前端js中数组的相关操作

数组的相关操作 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, …[, elementN]]]]); 创建一个数组并赋值要说明的是,虽然第二种方...

FV8023的博客 696

js数组相关操作汇总

一、数组的创建 1.字面量方式创建 var a = [3, 11, 8]; // [3,11,8]; 2.使用构造器创建 var a = Array(3); // [,,] var a = Array(3,11,8); // [ 3,11,8 ] 3.Array.of() 返回由所有参数值组成的数组 let a = Array.of(3, 11, 8); // [3,11,8] let a = Array.of(3); // [3] 4.Arrary.from() 将两类...

xjjjj1的博客 278

js数组相关操作操作方法

数组 数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。数组是种将一组数据存储在单个变量名 下的优雅方式。 //普通变量一次只能存储一一个值 var num = 10; //数组一次可以存储多个值 var arr = [1,2,3,4,51; JS中创建数组有两种方式:1.利用new创建数组 var 数组名= new Array() ; var arr = new Array() ;//创建一个新的空数组 //注意A要大写 2.利用数组字面量创建数组 ..

weixin_47791640的博客 303

记录工作中常用的 JS 数组相关操作

工作中难免会遇到各种各样的数据结构,较为全面的了解数组操作,对于复杂数据结构的处理会非常有用且节省时间。所以想在这里总结一下工作中常用的数组操作,都是一些非常基础的知识,大家看个乐就好~

fx67ll的博客 1183

JS数组的一大波相关操作总结

引言 JS数组前端开发应该经常与其打交道,尤其是在MVVM数据驱动视图,视图改变数据流行之后,开发网页多数时间在操作各种JS数组;那么它是什么?如何定义?有哪些属性?有哪些方法?如何遍历? 针对这些问题我在这里小结一下; 一、数组定义、特点、创建 1. 定义: 数组是一组数据的集合,其表现形式就是内存中的一段连续的内存地址,数组名称其实就是连续内存地址的首地址 2. 特点: 数组定义时可以无需指定数组长度 存储数据是无需指定具体类型,可以存储任意类型 3. 创建: var array=[1,2

一个女胖子的博客 433
上一篇: 图标与内容文字垂直对齐
下一篇: DOM中的范围
也无风雨丶
博客等级 码龄10年 52粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值