总结: 数组常用的方法

article/2025/10/12 3:28:17

在实际开发当中, 数组和对象使用到最多的; 数组和对象有很多的方法, 这里主要探讨一下:

  • 数组的增删改查
  • 数组的排序方式
  • 数组转换成其他数据类型的方式
  • ES6数组新增常用的迭代方式

为什么需要数组?

        数组可以存入不限数的数据, 并且可以使用下标值进行访问; 数据在数组的内部是有序排列的, 数组经常被运用在循环遍历当中.

        在DOM中使用map方式映射dom数, 在vue中使用v-for渲染到页面上等等都会出现数组循环遍历的身影; 所以数组是很重要的!!!

(1) 数组的增删改查

增: 使用到一个api的时候, 必须关注三点: 1. 作用  2. 返回值  3. 用法

① push()  影响原数组

        作用: 在数组的末尾添加一个数据

        参数: 一个数据或多个

        返回值: 添加完后新数据的length值

        用法: 数组.push(数据)

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.push(6, 7, 8);const arr2 = arr.push(9, 10, 11);console.log(arr);console.log(arr1);console.log(arr2);</script>

② unshift()  影响原数组

        作用: 从数组的开头增加一个数据

        参数: 一个数据或多个

        返回值: 新数组的length值

        用法: 数组.unshift(数据)

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.unshift(6, 7, 8);const arr2 = arr.unshift(9, 10, 11);console.log(arr);console.log(arr1);console.log(arr2);</script>

③ splice()  影响原数组

        作用: 在指定的下标值前面添加数据

        参数: 1.指定下标值  2.要删除数据的数量  3.添加数据的数量

        返回值: 没有或者说是空数组"[ ]"

        用法: 数组.splice(下标值, 数据......)

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.splice(5, 0, "第一个数据", "第二个数据");console.log(arr);console.log(arr1);</script>

④concat()  不影响原数组

        作用: 连接两个数组(先创建当前数组的副本, 然后把第二个数组添加到副本的末尾, 不会影响原数组)

        参数: 第二个数组

        返回值: 连接好的新数组

        用法: 数组1.concat(数组2)

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.concat([6, 7, 8, 9, 10]);console.log(arr);console.log(arr1);</script>

删:

① pop()  影响原数组

        作用: 从数组的末尾删除一个数据(一次只能删除一个)

        参数: 无

        返回值: 被删除的数据

        用法: 数组.pop()

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.pop();console.log(arr);console.log(arr1);</script>

  

② shift()  影响原数组

        作用: 从数组的开头删除一个数据(一次只能删除一个)

        参数: 无

        返回值: 被删除的数据

        用法: 数组.shift()

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.shift();console.log(arr);console.log(arr1);</script>

 

③ splice()  影响原数组

        作用: 指定的下标值后面, 删除一个或多个数据

        参数: 1.指定的下标值  2.删除数据的个数

        返回值: 包含被删除数据的数组

        用法: 数组.splice(开始位置, 删除的数据)

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.splice(0, 2);console.log(arr);console.log(arr1);</script>

④ slice()  不影响原数组

        作用: 创建一个含有原来数组中数据的新数组

        参数: 1.开始的原数组的下标值(包含)  2.结束的原数组的下标值(不包含)

        返回值: 获取完数据后的新数组

        用法: 数组.slice(开始位置, 结束位置)

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.slice(0, 2);const arr2 = arr.slice(2, 4);console.log(arr);console.log(arr1);</script>

改:

① splice()  影响原数组

        作用: 指定的下标值后面, 删除一个或多个数据, 添加一个或多个数据

        参数: 1.指定的下标值  2.删除数据的个数  3.添加数据的个数

        返回值: 包含被删除数据的数组

        用法: 数组.splice(开始位置, 删除的数据, 添加的数据)

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.splice(0, 2, "第一个元素", "第二个元素");console.log(arr);console.log(arr1);</script>

  

查:

① indexOf()

        作用: 查找指定数据, 有这返回该数据的下标值, 没有这返回-1

        参数: 需查询的数据

        返回值: 指定数据的下标值或-1

        用法: 数组.indexOf(数据)

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.indexOf(1);const arr2 = arr.indexOf(0);console.log(arr);console.log(arr1);console.log(arr2);</script>

 

② includes()

        作用: 查找指定数据, 有这返回true, 没有则返回false

        参数: 需查询的数据

        返回值: true或false

        用法: 数组.includes(数据)

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.includes(1);const arr2 = arr.includes(0);console.log(arr);console.log(arr1);console.log(arr2);</script>

  

③ find()

        作用: 返回第一个匹配的数据

        参数: 回调函数

        返回值: 指定数据的下标值或undefined

        用法: 数组.find(回调函数)

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.find(item => item === 1);const arr2 = arr.find(item => item === 0);console.log(arr);console.log(arr1);console.log(arr2);</script>

  <script>const arr = [{ name: '张三', age: 20 }, { name: '李四', age: 30 }];const res1 = arr.find(item => item.age > 18);const res2 = arr.find(item => item.name === '李四');console.log(res1);console.log(res2);</script>

(2) 数组的排序方式

① reverse()

        作用: 翻转数组

        参数: 无

        返回值: 翻转完后的新数组

        用法: 数组.reverse()

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.reverse();console.log(arr);console.log(arr1);</script>

② sort()

        作用: 按需排列数组中数据的顺序

        参数: 回调函数

        返回值: 新顺序的数组

        用法: 数组.reverse(function (a, b) {return a - b / b - a})

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.sort(function (a, b) {return a - b; // 从小到大});console.log(arr);console.log(arr1);</script>

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.sort(function (a, b) {return b - a; // 从大到小});console.log(arr);console.log(arr1);</script>

(3) 数组转换成其他数据类型的方式

① join()

        作用: 将数组转换成字符串

        参数: 分隔符

        返回值: 转换好的新字符串

        用法: 数组.join("分隔符")

  <script>const arr = [1, 2, 3, 4, 5];const arr1 = arr.join(',');const arr2 = arr.join('?');const arr3 = arr.join('!');const arr4 = arr.join('@');const arr5 = arr.join('$');console.log(arr);console.log(arr1);console.log(arr2);console.log(arr3);console.log(arr4);console.log(arr5);</script>

(4) ES6数组新增常用的迭代方式:

map(), forEach(), some(), every(), filter(), reduce(), findIndex()

ES6新增数组迭代方法_hmxs_hmbb的博客-CSDN博客 详细说明.


http://chatgpt.dhexx.cn/article/dHXHK4Yk.shtml

相关文章

hive 宽表变竖表 长表变宽表

1.这是源数据以及需要转化的目标表. 我们的方法是 , 用 GROUP BY按照year分组 , 并且依次提取1月,2月,3月,4月的 num,具体实现 1 2 3 4 5 6 select year, max(case when month1 then money else 0 end) as M1, max(case when month2 then money else 0 end) as M2, max(case w…

【pandas】变形(长宽表变换)

变形 长宽表的变形 长表变宽表就是一个分类变量的多个值展开成多个变量&#xff0c;和哑变量变换有点相似&#xff0c;但不是0-1编码而是其他变量的值。 宽表变长表类似&#xff0c;多个类别可以化在一个分类变量下。 pivot pivot是一种典型的长表变宽表的函数&#xff0c;…

数据库设计--大宽表

宽表的概念 基本概念 宽表从字面意义上讲就是字段比较多的数据库表。通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表。 由于把不同的内容都放在同一张表存储&#xff0c;宽表已经不符合三范式的模型设计规范&#xff0c;随之带来的主要坏处就是数据的大量冗…

Flink cdc+ doris 大宽表实践~

还没整理好&#xff0c;别慌。 一&#xff0c;业务问题&#xff1a; 多个表关联join&#xff08;涉及时间维度跨度很长&#xff09;&#xff0c;几乎等同于全量关联&#xff0c;这个时候flink sql join没法做&#xff0c;因为state会无线增大&#xff0c;然后OOM。 二&#xf…

实现MySQL同步数据到ES构建宽表

作者介绍 Ceven&#xff0c;德勤乐融(北京)科技有限公司 邮箱&#xff1a;likailindeqinyuerong.com 前言 CloudCanal 近期提供了自定义代码构建宽表能力&#xff0c;我们第一时间参与了该特性内测&#xff0c;效果不错。开发流程详见官方文档 《CloudCanal自定义代码实时加…

宽表:数据仓库 - “宽表”之争?

昨天在技术交流群里一个问题引发了激烈的讨论&#xff0c;我决定把它记录下来。 问题如下&#xff1a;DWD 中有宽表么&#xff1f; 作为扫盲文章&#xff0c;基础知识我们再普及一下&#xff0c;先介绍下基础相关概念。 数仓分层&#xff08;来自&#xff1a;个人理解&#xff…

Elasticseach:从微服务架构演变到大宽表思维的架构转变

序言 图示&#xff1a;Elasticsearch 在DB-Engine综合排名第8 Elasticsearch 简称"ES”, 在DB-Engine 综合排名第8&#xff0c;已经持续了相当长的时间&#xff0c;按照当下热度应该会继续保持或者上升一个名次&#xff1b;ES在多数工程师印象中最深刻可能是ELK三件套或者…

9.Flink实时项目之订单宽表

1.需求分析 订单是统计分析的重要的对象&#xff0c;围绕订单有很多的维度统计需求&#xff0c;比如用户、地区、商品、品类、品牌等等。为了之后统计计算更加方便&#xff0c;减少大表之间的关联&#xff0c;所以在实时计算过程中将围绕订单的相关数据整合成为一张订单的宽表…

数仓建模—宽表的设计

宽表的设计 高内聚低耦合 宽表是数仓里面非常重要的一块&#xff0c;数仓是分层的&#xff0c;这是技术进步和时代变化相结合的产物&#xff0c;数仓的分层式为了更好地管理数仓以及更加高效地进行数据开发。 宽表主要出现在dwd 层和报表层&#xff0c;当然有的人说dws 层也有…

基于宽表的数据建模应用

一、业务背景 1.1 数据建模现状 互联网企业往往存在多个产品线&#xff0c;每天源源不断产出大量数据&#xff0c;这些数据服务于数据分析师、业务上的产品经理、运营、数据开发人员等各角色。为了满足这些角色的各种需求&#xff0c;业界传统数仓常采用的是经典分层模型的数…

数据仓库宽表

1. 构建宽表的目的 讲宽表我想从为什么需要宽表入手&#xff0c;而不是一上来就抠概念。因为我觉得一门知识叫什么名字并不是最核心的&#xff0c;关键是搞清楚它的诞生背景以及如何在特定场景用好它。 构建宽表的目的很简单,就是为了"一站式"尽可能多的展示我们需要…

宽表, 窄表, 维度表, 事实表的区别

在数据开发里, 会涉及到一些概念: 宽表, 窄表, 维度表, 事实表 宽表: 把多个维度的字段都放在一张表存储, 增加数据冗余是为了减少关联, 便于查询. 查询一张表就可以查出不同维度的多个字段窄表: 和我们 mysql 普通表三范式相同, 把相同维度的字段组成一张表, 表和表之间关联查…

[转]科普 | 什么是宽表?

科普 | 什么是宽表&#xff1f;一文带你了解 数据仓库宽表_数据宽表_吕归尘0的博客-CSDN博客 一、什么是“宽表”&#xff1f; “宽表”从字面上的意思就是字段&#xff08;列&#xff09;比较多的数据库表&#xff0c;是通过关联字段将多个业务主题相关的数据表进行挂接组装…

数仓建模,宽表是什么?如何设计?

数仓建模&#xff0c;宽表是什么&#xff1f;如何设计&#xff1f; 宽表的设计为什么要建设宽表宽表的好处和不足如何设计宽表总结 宽表的设计 其实宽表是数仓里面非常重要的一块&#xff0c;宽表主要出现在dwd 层和报表层&#xff0c;当然有的人说dws 层也有宽表&#xff0c;…

线性代数笔记22——特征值和特征向量

特征向量 函数通常作用在数字上&#xff0c;比如函数f作用在x上&#xff0c;结果得到了f(x)。在线性代数中&#xff0c;我们将x扩展到多维&#xff0c;对于Ax来说&#xff0c;矩阵A的作用就像一个函数&#xff0c;输入一个向量x&#xff0c;通过A的作用&#xff0c;得到向量Ax。…

特征值和特征向量意义

本文转载自https://blog.csdn.net/fuming2021118535/article/details/51339881&#xff0c;版权问题请联系博主删除 在刚开始学的特征值和特征向量的时候只是知道了定义和式子&#xff0c;并没有理解其内在的含义和应用&#xff0c;这段时间整理了相关的内容&#xff0c;跟大家…

特征值和特征向量的几何含义理解

在刚开始学的特征值和特征向量的时候只是知道了定义和式子&#xff0c;并没有理解其内在的含义和应用&#xff0c;这段时间整理了相关的内容&#xff0c;跟大家分享一下&#xff1b; 首先我们先把特征值和特征向量的定义复习一下&#xff1a; 定义&#xff1a; 设A是n阶矩阵&am…

线性代数之——特征值和特征向量

线性方程 A x b Axb Axb 是稳定状态的问题&#xff0c;特征值在动态问题中有着巨大的重要性。 d u / d t A u du/dtAu du/dtAu 的解随着时间增长、衰减或者震荡&#xff0c;是不能通过消元来求解的。接下来&#xff0c;我们进入线性代数一个新的部分&#xff0c;基于 A x …

特征值和特征向量概述-面试必问3(含特征值、向量意义)

特征值和特征向量&#xff08;Eigenvalues and eigenvectors&#xff09; 在线性代数中&#xff0c;一个线性变换的特征向量&#xff08;eigenvector 或者 characteristic vector&#xff09;是一个非零向量。将线性变换应用在它上面&#xff0c;它最多以一个标量因子进行伸缩…

java 如何实现深拷贝

1、什么叫Java浅拷贝&#xff1f;  浅拷贝是按位拷贝对象&#xff0c;它会创建一个新对象&#xff0c;这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型&#xff0c;拷贝的就是基本类型的值&#xff1b;如果属性是内存地址&#xff08;引用类型&#xff09;&…