JS数组相关知识

news2024/11/20 1:39:29

获取数组的最大值/最小值:

let arrary = [2,5,4]
let max = arrary[0]
for(let i = 0;i<arrary.length;i++){
    if(arrary[i]>max){
        max = arrary[i]
    }
}console.log(max);

//查询数组最小值

let arr = [2,21,34,23,45]
let min = arr[0]
for(let i= 0;i<arr.length;i++){
    if(arr[i]<min){
        min = arr[i]
    }
}console.log(min);

首先定义个数组,在这里选择了索引值为0的第一个值为max(这里我们是假定了一个),然后用For循环来遍历数组,在遍历的每个元素中只要元素i比我们假定的max大,就交换位置。一直遍历一直交换,直到选出最大的赋值给max.最小值同理。

数组元素的增加:

arr.push()    将一个或多个元素放置数组的尾部,注意:它还会返回数组的长度

arr.unshift()  方法用于向数组的开头添加一个或多个元素,并返回新的数组长度。与 push() 不同,unshift() 会改变数组中已存在元素的位置,将原有的所有元素向后移动,以在数组的最前面为新添加的元素腾出空间。

arr.push()方法:

        let arr = [2,21,34,23,45]
        arr.push(33,44);
        console.log(arr)

arr.unshfit()方法:

        let arr = [2,21,34,23,45]
        arr.unshift(33,44);
        console.log(arr)

(重要知识)数组筛选:

        let arr = [2,21,34,23,45]
        let arry = []
        for(let i = 0;i<arr.length;i++){
            if(arr[i]>=20){
                arry.push(arr[i])
            }
        }console.log(arry)

删除的方法:

1.arr.pop()

2.arr.shift()

3.arr.splice()

在 JavaScript 中,arr.pop()arr.shift(), 和 arr.splice() 都是数组(Array)对象的方法,它们各自有不同的用途和行为。以下是这三个方法之间的主要区别:

1. arr.pop()

pop() 方法用于删除并返回数组的最后一个元素。如果数组为空,则返回 undefined

示例

 
 

javascript复制代码

let arr = [1, 2, 3, 4, 5];
let lastElement = arr.pop();
console.log(arr); // 输出: [1, 2, 3, 4]
console.log(lastElement); // 输出: 5

2. arr.shift()

shift() 方法用于删除并返回数组的第一个元素。如果数组为空,则返回 undefined

示例

 
 

javascript复制代码

let arr = [1, 2, 3, 4, 5];
let firstElement = arr.shift();
console.log(arr); // 输出: [2, 3, 4, 5]
console.log(firstElement); // 输出: 1

3. arr.splice()

splice() 方法可以在任意的位置给数组添加/删除任意个元素。这个方法非常强大,因为它允许你在一个操作中同时进行添加和删除操作。

基本语法

 
 

javascript复制代码

array.splice(index, howmany, item1, ....., itemX)
  • index(必需):整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
  • howmany(必需):要删除的项目数量。如果设置为 0,则不会删除项目。
  • item1, ..., itemX(可选):向数组添加的新项目。

示例

删除元素

 
 

javascript

let arr = [1, 2, 3, 4, 5];
arr.splice(1, 2); // 从索引1开始,删除2个元素
console.log(arr); // 输出: [1, 4, 5]

添加元素

javascript

let arr = [1, 2, 3, 4, 5];
arr.splice(2, 0, 'a', 'b'); // 在索引2的位置添加元素 'a' 和 'b'
console.log(arr); // 输出: [1, 2, 'a', 'b', 3, 4, 5]

同时删除和添加元素

javascript

let arr = [1, 2, 3, 4, 5];
arr.splice(1, 2, 'a', 'b'); // 从索引1开始,删除2个元素,然后添加 'a' 和 'b'
console.log(arr); // 输出: [1, 'a', 'b', 4, 5]

总结:

  • pop() 和 shift() 分别用于删除数组的最后一个和第一个元素,并返回被删除的元素。
  • splice() 则提供了更多的灵活性,允许你在数组的任意位置添加或删除任意数量的元素。

这三个方法都会改变原数组的内容。根据你的需求,你可以选择使用 pop()shift(), 还是 splice() 来操作数组。

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

以下是一个用 JavaScript 实现的冒泡排序的案例:

function bubbleSort(arr) {  
    let len = arr.length;  
    for (let i = 0; i < len - 1; i++) {  
        for (let j = 0; j < len - 1 - i; j++) {  
            if (arr[j] > arr[j + 1]) { // 相邻元素两两对比  
                let temp = arr[j + 1]; // 元素交换  
                arr[j + 1] = arr[j];  
                arr[j] = temp;  
            }  
        }  
    }  
    return arr;  
}  
  
// 测试冒泡排序函数  
let arr = [3, 2, 4, 1, 5];  
console.log('排序前:', arr);  
bubbleSort(arr);  
console.log('排序后:', arr);

在这个例子中,bubbleSort 函数接受一个数组 arr 作为参数,然后通过两层循环进行排序。外层循环控制所有的遍历,内层循环负责每一轮的冒泡排序,即将相邻的元素进行比较并交换(如果需要)。

注意,这个冒泡排序的实现没有进行任何优化,每次都会遍历整个数组,即使最后几个元素已经排好序了。在实际应用中,你可能会想要实现一些优化策略,比如当某一轮遍历中没有进行任何交换时,就可以认为数组已经排好序了,可以提前结束排序。

在这里的len-1是因为数组检索索引值,举个例子:

[1,2,3,4,5]这是一个5个数据的数组,索引值是0,1,2,3,4索引值到4,减一避免了索引不到错误的问题。

数组-i-1,通过规律观察,5个数遍历一遍走4次,4个数的遍历的第二遍走3次。

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

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

相关文章

“我快无聊死了”用英语怎么说?柯桥英语口语学习,成人零基础学外语

每日一句 Im bored to death. 我快无聊死了。 单词解析&#xff1a; bored / bɔːd / adj.无聊的&#xff0c;厌倦的 bored to d15857575376eath&#xff1a;指非常无聊或厌烦&#xff0c;达到了极点的程度。 "bored" 和 "boring" 都与无聊相关&#…

蓝桥杯练习系统(算法训练)ALGO-980 斐波那契串

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;10.0s Java时间限制&#xff1a;30.0s Python时间限制&#xff1a;50.0s 问题描述 斐波那契串由下列规则生成&#xff1a;   F[0] "0";   F[1] "1";   F[n] F[n-1] F[n-2]…

AI人工智能改变项目管理及控制的5种方式,最后一个你认同吗?

前言 斯蒂芬霍金说&#xff1a;“AI is likely to be either the best or the worst thing to happen to humanity. 人工智能可能是发生在人类身上的最好或最坏的事情”。根据Gartner的说法&#xff0c;它将是前者。它预测到2020年&#xff0c;人工智能将减少1万个就业机会&am…

软件设计师15--进程资源图

软件设计师15--进程资源图 考点1&#xff1a;进程资源图例题&#xff1a; 考点1&#xff1a;进程资源图 例题&#xff1a; 1、在如下所示的进程资源图中&#xff0c;D&#xff09;。 A、P1、P2、P3都是非阻塞节点&#xff0c;该图可以化简&#xff0c;所以是非死锁的 B、P1、…

Linux:1_常见指令以及权限理解(上)

常见指令以及权限理解 一.补充知识 为方便初学者更好的理解Linux系统,这部分将对比windows系统补充一部分必要知识1 2 3 4 5 6 二.补充指令 1. 重新认识指令: 指令本质都是程序 —指令、程序、可执行程序都是一回事(都是文件内容属性)指令就是程序 … 安装和卸载是在把可…

【Axure高保真原型】下拉列表切换图表

今天和大家分享通过下拉列表动态切换统计图表的原型模板&#xff0c;我们可以通过下拉列表选择要显示的图表&#xff0c;包括柱状图、条形图、饼图、环形图、折线图、曲线图、面积图、阶梯图、雷达图&#xff1b;而且图表数据可以在左侧表格中动态维护&#xff0c;包括增加修改…

深入理解Vue3中利用mitt:实现轻量级事件监听与触发

深入理解Vue3中利用mitt&#xff1a;实现轻量级事件监听与触发 摘要&#xff1a;本文将介绍如何在Vue3中利用mitt库实现轻量级的事件监听与触发。我们将详细介绍mitt库的特性和使用方法&#xff0c;并通过实际示例展示如何在Vue3组件中应用mitt。 一、引言 在前端开发中&…

LeetCode24.两两交换链表节点

24.两两交换链表中的节点 这道题&#xff0c;重点在于理清楚各个指针之间的关系。 链表的题一定要注意断链和连接的顺序&#xff0c;有时候需要申请新的节点来保存某个节点&#xff0c;防止断链 24。题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交…

Selenium Web自动化测试——基于unittest框架的PO设计模式

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

回归测试,有什么高效的测试方法?

什么是回归测试&#xff1f; 回归测试&#xff08;Regression testing&#xff09; 指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上&#xff0c;软件产生新版本&#xff0c;都需要进行回归测试&#xff0c;验证以前发现和修复的错误是否在新软件版本上再次出现…

虚拟机Centos8登陆之后又弹回到登陆界面

今天开机发行&#xff0c;虚拟机Centos登陆之后又弹回到登陆界面&#xff0c;在网上一通搜索之后&#xff0c;发现Centos7正确输入账号密码后&#xff0c;循环进入输入账号密码界面&#xff08;情况一设置错误PATH&#xff09;&#xff0c;以及进入单用户模式_centos一直卡在用…

120.PyQt5_QPainter_图形绘制控件

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

第6章:6.1 文本格式化 (MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 在数据处理与报告生成的过程中&#xff0c;我们经常需要将数据转…

AI“造神运动”终结,杀死,重生

AGI回归本质&#xff0c;百亿美金创业机会涌现。 “专注AI技术迭代会让我焦虑&#xff0c;关注业务我不会焦虑&#xff0c;有些问题十年前存在十年后还在&#xff0c;我现在就明确不卷模型&#xff0c;只思考如何让产品能自我‘造血’。” 一位正卷在AI创业洪流里的硅谷创业者…

重学SpringBoot3-WebMvcConfigurer接口

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-WebMvcConfigurer接口 WebMvcConfigurer基本信息为什么WebMvcConfigurer能配置底层行为实现WebMvcConfigurer举例1. 自定义格式化器和转换器2. 添加拦截…

AI新工具(20240313) 世界上第一个完全自主的AI软件工程师Devin 已经开始接外包了;又一个开源本地知识库问答系统

1: Cognition AI Devin 世界上第一个完全自主的AI软件工程师Devin 已经开始接外包了 Devin是世界上第一个完全自主的AI软件工程师&#xff0c;具备长期推理和规划的能力&#xff0c;能够执行复杂的工程任务&#xff0c;包括学习、修复错误、与用户实时合作等。Devin可以学习并…

200W年薪的大佬 随手丢给我“Spring速成宝典”看完这些知识点直接定级P7

面试官&#xff1a;答的很好&#xff0c;最后一个问题&#xff1a;如果没有Spring&#xff0c;你打算怎么开展工作&#xff1f; 这个思考了几分钟后&#xff0c;程序员小建是这么回答的&#xff1a;Spring的核心源码&#xff0c;比如&#xff1a;IOC、AOP、Spring事务、MVC原理…

土木工程设计系列-基于规范的简单基础工程自动设计

土木工程设计系列-基于规范的简单基础工程自动设计 土木工程设计系列-基于规范的简单基础工程自动设计 土木工程设计系列-基于规范的简单基础工程自动设计前言基础工程设计简介程序组成源码文件树文件说明&#xff1a;程序执行流程 部分接口介绍程序使用源码获取 前言 本文为土…

高精度三维扫描测量服务3d扫描仪抄数工业级精密激光扫描建模设计

在工业设计与制造领域&#xff0c;工业3D扫描仪的应用日益广泛&#xff0c;其“抄数设计”的功能更是备受瞩目。抄数设计&#xff0c;简单来说&#xff0c;就是通过3D扫描仪对实物进行精确测量&#xff0c;快速获取其三维数据&#xff0c;并基于这些数据进行设计、分析和优化。…

快速排序 刷题笔记

思路 分治双指针 在每个区间选定一个基准目标 两个指针从数组的两边向中间推进 使用 while循环判断 do {i;}while(q[i]<x); do{j--;}while(q[j]>x); 每次这样做完就会找到q[i]>x,,,,q[j]小于x 此时我们交换 q[i] ,q[j]于是小于x的数分到了小于x的一侧 大…