JavaScript学习笔记(三)

19、JavaScript 数组排序

19.1 数组排序:sort()

  • sort() 方法以字母顺序对数组进行排序:
<p id="demo"></p><script>var cars01 = ["Apple", "City", "Dog", "Bad"];document.getElementById('demo').innerHTML = cars01.sort();;</script>

运行效果:Apple,Bad,City,Dog

19.2 反转数组:reverse()

(1)数组反转:

<p id="demo"></p><script>var cars01 = ["Apple", "City", "Dog", "Bad"];document.getElementById('demo').innerHTML = cars01.reverse();;</script>

运行效果:Bad,Dog,City,Apple

(2)您可以使用它以降序对数组进行排序:

<p id="demo"></p><script>var cars01 = ["Apple", "City", "Dog", "Bad"];document.getElementById('demo').innerHTML = cars01.sort().reverse();</script>

运行效果:Dog,City,Bad,Apple

19.3 比值函数

比较函数的目的是定义另一种排序顺序。

比较函数应该返回一个负,零或正值,这取决于参数:

function(a, b){return a-b}

当 sort() 函数比较两个值时,会将值发送到比较函数,并根据所返回的值(负、零或正值)对这些值进行排序。

19.4 数字排序

默认地,sort() 函数按照字符串顺序对值进行排序。

该函数很适合字符串(“Apple” 会排在 “Banana” 之前)。

不过,如果数字按照字符串来排序,则 “25” 大于 “100”,因为 “2” 大于 “1”。

正因如此,sort() 方法在对数值排序时会产生不正确的结果。

我们通过一个比值函数来修正此问题:
(1)sort()实现数字升序:

<body><button onclick="myFunction()">点击</button><p id="demo"></p><script>var nums=[40,5,10,20,100,1];document.getElementById('demo').innerHTML = nums;function myFunction() {nums.sort(function(a,b){return a-b});document.getElementById('demo').innerHTML =nums;}</script>
</body>

运行效果:1,5,10,20,40,100

(2)sort()实现数字降序:

<body><button onclick="myFunction()">点击</button><p id="demo"></p><script>var nums=[40,5,10,20,100,1];document.getElementById('demo').innerHTML = nums;function myFunction() {nums.sort(function(a,b){return b-a});document.getElementById('demo').innerHTML =nums;}</script>
</body>

运行效果:100,40,20,10,5,1

19.5 以随机顺序排序数组

<body><button onclick="myFunction()">点击</button><p id="demo"></p><script>var nums=[40,5,10,20,100,1];document.getElementById('demo').innerHTML = nums;function myFunction() {nums.sort(function(a,b){return 0.5-Math.random()});document.getElementById('demo').innerHTML =nums;}</script>
</body>

19.6 查找最高(或最低)的数组值

JavaScript 不提供查找数组中最大或最小数组值的内建函数。

不过,在对数组进行排序之后,您能够使用索引来获得最高或最低值。

(1)sort()升序排序:

<body><button onclick="myFunction()">点击</button><p id="demo"></p><script>var nums=[40,5,10,20,100,1];document.getElementById('demo').innerHTML = nums;function myFunction() {nums.sort(function(a,b){return a-b});document.getElementById('demo').innerHTML =nums[nums.length-1];//最大值//document.getElementById('demo').innerHTML =nums[0];//最小值}</script>
</body>

(2)sort()降序排序:

<body><button onclick="myFunction()">点击</button><p id="demo"></p><script>var nums=[40,5,10,20,100,1];document.getElementById('demo').innerHTML = nums;function myFunction() {nums.sort(function(a,b){return b-a});// document.getElementById('demo').innerHTML =nums[nums.length-1];//最小值document.getElementById('demo').innerHTML =nums[0];//最大值}</script>
</body>

(3)对数组使用 Math.max():

<body><button onclick="myFunction()">点击</button><p id="demo"></p><script>var nums=[40,5,10,20,100,1];document.getElementById('demo').innerHTML = nums;function myFunction() {// document.getElementById('demo').innerHTML =Math.max.apply(null,nums);//最大值document.getElementById('demo').innerHTML =Math.min.apply(null,nums);//最小值}</script>
</body>

(4)遍历(最大值):

<body><!-- <button οnclick="myFunction()">点击</button> --><p>最大值为:<span id="demo"></span></p><script>var nums = [40, 5, 10, 20, 100, 2];// document.getElementById("demo").innerHTML = nums;document.getElementById("demo").innerHTML = myFunction(nums);function myFunction(array) {var len = array.length;var max = -Infinity;while (len--) {if (array[len] > max) {max = array[len];}}return max;}</script></body>

19.7 排序对象数组

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><button onclick="myFunction()">点击</button><p><span id="demo"></span></p><script>var nums = [{ type: "BMW", year: 2017 },{ type: "Audi", year: 2019 },{ type: "porsche", year: 2018 },];showData();function myFunction() {nums.sort(function (a, b) {return a.year - b.year;});showData();}function showData() {document.getElementById("demo").innerHTML =nums[0].type +" " +nums[0].year +"<br>" +nums[1].type +" " +nums[1].year +"<br>" +nums[2].type +" " +nums[2].year +"<br>";}</script></body>
</html>

运行效果:
BMW 2017
porsche 2018
Audi 2019

20、JavaScript 数组迭代

  • 数组迭代方法对每个数组项进行操作。

20.1 Array.forEach()

  • forEach() 方法为每个数组元素调用一次函数(回调函数)。

注释:该函数接受 3 个参数:

  • 项目值:value
  • 项目索引:index(可省略)
  • 数组本身:array(可省略)
  <body><!-- <button οnclick="myFunction()">点击</button> --><p><span id="demo"></span></p><script>var text = "";var nums = [1, 20, 15, 6, 100];nums.forEach(MyFunction);document.getElementById("demo").innerHTML = text;// function MyFunction(value, index, array) {//   text = text + value + "<br>";// }//或者function MyFunction(value) {text = text + value + "<br>";}</script></body>

运行效果:
1
20
15
6
100

20.2 Array.map()

  • 返回新数组

  • map() 方法通过对每个数组元素执行函数来创建新数组。

  • map() 方法不会对没有值的数组元素执行函数。

  • map() 方法不会更改原始数组。

请注意,该函数有 3 个参数:

  • 项目值:value
  • 项目索引: index,(可省略)
  • 数组本身:array(可省略)

示例:这个例子将每个数组值乘以2:

 <body><p><span id="demo"></span></p><script>var text = "";var nums = [1, 20, 15, 6, 100];var nums2 = nums.map(MyFunction);document.getElementById("demo").innerHTML = nums2;function MyFunction(value, index, array) {return value * 2;}//或者// function MyFunction(value) {//   return value * 2;// }</script></body>

运行效果:2,40,30,12,200

20.3 Array.filter()

  • 返回新数组
  • filter() 方法创建一个包含通过测试的数组元素的新数组。(筛选出满足条件的元素组成一个新的数组)

请注意此函数接受 3 个参数:

  • 项目值:value
  • 项目索引: index,(可省略)
  • 数组本身:array(可省略)

示例:这个例子用值大于 18 的元素创建一个新数组:

<body><p><span id="demo"></span></p><script>var text = "";var nums = [1, 20, 15, 6, 100];var nums2 = nums.filter(MyFunction);document.getElementById("demo").innerHTML = nums2;function MyFunction(value, index, array) {return value > 18;}</script></body>

运行效果:20,100

20.4 Array.reduce()

  • 返回单个值

  • reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。

  • reduce() 方法在数组中从左到右工作。

  • reduce() 方法不会减少原始数组。

请注意此函数接受 4 个参数:

  • 总数(初始值/先前返回的值):total
  • 项目值: value
  • 项目索引: index
  • 数组本身:tarray

示例:求数组元素总和:

<body><p><span id="demo"></span></p><script>var nums = [1, 20, 15, 6, 100];//返回一个值var total = nums.reduce(MyFunction);document.getElementById("demo").innerHTML = "总和=" + total;function MyFunction(total, value, index, array) {return total + value;}//或者// function MyFunction(total, value) {//   return total + value;// }</script></body>

20.5 Array.reduceRight()

  • 返回单个值
  • 和 Array.reduce()工作原理一样,不过reduceRight()在数组中从右到左工作。

20.6 Array.every()

  • 返回布尔值
  • every() 方法检查所有数组值是否通过测试。

请注意此函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身

示例:这个例子检查所有数组值是否大于 18:

 <body><p><span id="demo"></span></p><script>var nums = [1, 20, 15, 6, 100];//返回一个布尔值var isSatisfy = nums.reduce(MyFunction);document.getElementById("demo").innerHTML = "是否满足:" + isSatisfy;function MyFunction(value, index, array) {return value > 18;}//或者// function MyFunction( value) {//   return  value>18;// }</script></body>

运行结果:是否满足:false

20.7 Array.some()

  • 返回布尔值
  • some() 方法检查某些数组值是否通过了测试。

请注意此函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身
 <body><p><span id="demo"></span></p><script>var nums = [1, 20, 15, 6, 100];//返回一个布尔值var isSatisfy = nums.some(MyFunction);document.getElementById("demo").innerHTML = "是否满足:" + isSatisfy;function MyFunction(value, index, array) {return value > 18;}//或者// function MyFunction( value) {//   return  value>18;// }</script></body>

运行效果:是否满足:true

20.8 Array.indexOf()

  • 返回int值(位置)
  • indexOf() 方法在数组中搜索元素值并返回其位置。
  • 如果未找到项目,Array.indexOf() 返回 -1
  • 如果项目多次出现,则返回第一次出现的位置。

请注意此函数接受 2个参数:

array.indexOf(item, start)
  • item:必需。要检索的项目。
  • start:可选。从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到结尾。

示例:检索数组中的项目 “15”:

 <body><p><span id="demo"></span></p><script>var nums = [1, 20, 15, 6, 100];var index = nums.indexOf(15);document.getElementById("demo").innerHTML = "位置:" + index;</script></body>

运行效果:位置:2

20.9 Array.lastIndexOf()

  • 返回int值(位置)
  • Array.lastIndexOf() 与 Array.indexOf() 类似,但是从数组结尾开始搜索。

请注意此函数接受 2个参数:

array.lastIndexOf(item, start)
  • item:必需。要检索的项目。
  • start:可选。从哪里开始搜索。

示例:查找元素中最后一个15的位置:

<body><p><span id="demo"></span></p><script>var nums = [1, 20, 15, 6, 100, 15];var index = nums.lastIndexOf(15);document.getElementById("demo").innerHTML = "位置:" + index;</script></body>

运行效果:位置:5

20.10 Array.find()

  • 返回一个满足要求元素值
  • find() 方法返回通过测试函数的第一个数组元素的值。

请注意此函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身

示例:查找第一个大于18的元素:

 <body><p><span id="demo"></span></p><script>var nums = [1, 20, 15, 6, 100, 15];var index = nums.find(myFunction);document.getElementById("demo").innerHTML ="第一个大于18的元素为:" + index;function myFunction(value, index, array) {return value > 18;}</script></body>

运行结果:第一个大于18的元素为:20

20.11 Array.findIndex()

  • 返回一个int值(位置)
  • findIndex() 方法返回通过测试函数的第一个数组元素的索引。

请注意此函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身

示例:这个例子查找大于 18 的第一个元素的索引:

<body><p><span id="demo"></span></p><script>var nums = [1, 20, 15, 6, 100, 15];var index = nums.findIndex(myFunction);document.getElementById("demo").innerHTML ="第一个大于18的元素的位置为:" + index;function myFunction(value, index, array) {return value > 18;}</script></body>

运行效果:第一个大于18的元素的位置为:1

21 JavaScript 数组 Const

JavaScript 数组 Const

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

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

相关文章

《梦醒蝶飞:释放Excel函数与公式的力量》 5.2VLOOKUP函数

第二节 5.2VLOOKUP函数 HLOOKUP函数&#xff1a;水平查找的能手&#xff0c;在Excel中&#xff0c;HLOOKUP函数&#xff08;Horizontal Lookup的缩写&#xff09;是执行水平查找的函数&#xff0c;它允许你根据一个关键值在表格的第一行中查找&#xff0c;并返回同一列中另一个…

模组硬件通用丨模组USB电路设计指南

USB&#xff08;全称&#xff1a;Universal Serial Bus&#xff09;是一种串口总线标准&#xff0c;也是一种输入输出接口的技术规范&#xff0c;广泛应用于个人电脑和移动设备等信息通讯产品&#xff0c;并扩展至摄影器材、数字电视&#xff08;机顶盒&#xff09;、游戏机等相…

本地可以Run大模型吗?Llama3?安排!

➡️ 前言 本地可以跑大模型吗? ChatGPT发布之后&#xff0c;引起了AI领域剧烈震动&#xff0c;从2023年3月百度发布新一代大预言模型文心一言开始&#xff0c;大模型如雨后春笋般不断涌现&#xff0c;国内阿里巴巴的通义千问、华为的盘古大模型、科大讯飞的星火认知大模型、…

木材容易发霉怎么办除霉处理方法

木材存放不当就容易出现发霉情况&#xff0c;那么可通过那些方法将木材表面的霉斑除掉呢&#xff1f;经ihaoer防霉人士介绍处理木材发霉处理方法如下&#xff1a; 木材发霉的原因主要包括木材本身的营养物质、环境湿度、温度以及空气流动性等因素。木材中含有蛋白质、淀粉、油类…

【面试题】Linux 下 MakeFile(第一篇)

1.请简单介绍Makefile是什么&#xff1f; Makefile是用于编译和管理项目的一组规则和指令。它保存了编译器和连接器的参数选项&#xff0c;还表述了所有源文件之间的关系&#xff08;如源代码文件需要的特定包含文件&#xff0c;可执行文件要求包含的目标文件模块及库等&#x…

CPR曲面重建代码

废话不说&#xff0c;直接上代码&#xff1a; #include "vtkAutoInit.h" #include "vtkPolyData.h" #include "vtkProbeFilter.h" #include "vtkParametricFunctionSource.h" #include "vtkParametricSpline.h" #include &…

基于Java微信小程序校园自助打印系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

2024年江苏省13市科技企业上市培育计划入库企业申报条件程序和截止时间

一、江苏省13市科技企业上市培育计划入库企业申报条件 1.企业属于有效期内高新技术企业&#xff0c;申报时须在我省行政区域内成立三年以上&#xff0c;经营状况良好&#xff0c;已设立或拟设立为股份有限公司&#xff0c;且尚未在主板、创业板、科创板、北证上市或在“新三板…

计算机网络知识点(八)

目录 一、简述HTTP常见的响应状态码及其含义 1、解析 2、分类 二、简述GET请求和POST请求的区别 三、简述Cookie和Session的区别 四、简述HTTPS的加密与认证过程 一、简述HTTP常见的响应状态码及其含义 1、解析 ①200&#xff1a;从状态码发出的请求被服务器正常处理。 …

【开源项目】智慧北京案例~超经典实景三维数字孪生智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码!

飞渡科技数字孪生北京管理平台&#xff0c; 依托实景数字孪生底座&#xff0c;以城市感知网络为硬件基础&#xff0c;以城市大数据为核心资源&#xff0c;以数字孪生、云计算、人工智能为关键技术&#xff0c;实现城市产业规划、资产安全管理、城市能耗监控等一体化空间融合。 …

CP AUTOSAR标准之FlexRayStateManager(AUTOSAR_CP_SWS_FlexRayStateManager)(更新中……)

1 简介和功能概述 该规范描述了AUTOSAR基础软件模块FlexRay状态管理器(FrSM)的功能、API和配置。   AUTOSAR BSW堆栈为每条通信总线指定一个总线特定状态管理器。该模块应实现相应总线的控制流。FrSM是通信服务层的成员。它与通信硬件抽象层和系统服务层交互。 3 相关文献 …

基于电商模式的性能测试(2) —— 使用Jmeter参数化功能+JSR223 PreProcessor+JSON Extractor完成注册登录的数据驱动

1、前置条件 此例使用的是GitHub上一个开源的电商项目mall&#xff0c;需要的可以去GitHub上下载部署&#xff0c;有详细的部署教程&#xff1a; GitHub地址&#xff1a;github.com/macrozheng/…部署教程&#xff1a;macrozheng.github.io/mall-learni… 2、场景抽离 首先要…

C#的无边框窗体项目模板 - 开源研究系列文章

继续整理和编写代码及博文。 这次将笔者自己整理的C#的无边框窗体项目的基本模板进行总结&#xff0c;得出了基于C#的.net framework的Winform的4个项目模板&#xff0c;这些模板具有基本的功能&#xff0c;即已经初步将代码写了&#xff0c;直接在其基础上添加业务代码即可&am…

java实现一个图的最短路径算法

import java.util.*; //java实现一个图的最短路径算法 public class Test_34 { // 定义一个常量INF&#xff0c;表示无穷大。private static final int INF Integer.MAX_VALUE; // 定义一个方法dijkstra&#xff0c;接受一个二维数组图和一个起始节点作为参数。public s…

七牛云 Miku 快直播,陪你一起看球!

足球&#xff0c;作为全球最受欢迎的运动之一&#xff0c;每一次大赛都是球迷心中的狂欢&#xff0c;每一场比赛都记录着足球历史的精彩。 2000 年&#xff0c;特雷泽盖的金球&#xff0c;照亮了法兰西的足球梦想。 2004 年&#xff0c;查理斯特亚斯的头槌破门&#xff0c;成就…

小甲鱼——集合

一什么是集合 type({}) <class dict> #字典 type({"one"}) <class set> #集合type({"one":1}) <class dict> #字典 跟集合一样&#xff0c;字典最大的特性就是——唯一性 即&#xff1a;集合中的所有元素&#xff0c;都应该是独…

第15天:Vue.js应用的测试和调试

第15天&#xff1a;Vue.js应用的测试和调试 目标 学习Vue.js应用的测试和调试方法&#xff0c;包括E2E&#xff08;端到端&#xff09;测试和单元测试。 任务概览 学习单元测试基础。探索E2E测试框架。实现Vue组件的测试。 详细步骤 1. 单元测试基础 单元测试是对应用中…

浅谈逻辑控制器之while控制器

浅谈逻辑控制器之while控制器 “While控制器”是一种高级控制结构&#xff0c;它允许用户基于特定条件来循环执行其下的子采样器或控制器&#xff0c;直至该条件不再满足。本文旨在详细介绍While控制器的功能、配置方法、使用场景以及实践示例&#xff0c;帮助测试工程师高效利…

上海市计算机学会竞赛平台2023年8月月赛丙组下降幂多项式

题目描述 &#x1d465;x 的 &#x1d458;k 次下降幂定义为 &#x1d465;(&#x1d458;)(&#x1d465;)(&#x1d465;−1)(&#x1d465;−2)⋯(&#x1d465;−&#x1d458;1)x(k)(x)(x−1)(x−2)⋯(x−k1) &#x1d465;x 的下降幂多项式是由 &#x1d465;x 的一组…

工信部中小企业局一行莅临盘古信息调研指导

近日&#xff0c;中小企业数字化转型城市试点调研交流活动在广东东莞举行&#xff0c;工业和信息化部中小企业局副局长商超&#xff0c;广东工业和信息化厅二级巡视员张振祥&#xff0c;工业和信息化部中小企业局创业创新处处长李海涛&#xff0c;东莞市委常委、副市长刘光滨&a…