今天主要是有关周赛的,比赛的时候是用c++写的并且是
ak了,但是就是想用js再复盘一下,也不能只是图一时之爽,如果是换在实际的场景里面我是不是只会用 c++快速写出来。

最近也要从js逐渐转向ts,感觉Ts才是主旋律,js还是有很多不足的方,在此立个flag,这个星期彻底搞定Ts并且产出一篇较为详细的文章。

主要复盘的点:

js的数组方法,还有多维数组怎么定义比较好。

  • 构造函数:
    new Array(): 当只有一个参数的时候,就会定义这个长度的一维数组,当有两个或者两个以上,就会把这些参数作为数组的内容。
const arr = new Array()// 空数组
const arr1 = new Array(3) // [undefined, undefined, undefined] 
const arr2 = new Array(1, 2, 3) // [1, 2, 3] 
  • Array.of():
    文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/of
    没见过的冷门函数,其实就是把里面的参数都当成是数组的内容。

  • length属性,是个很神奇的属性,之前还不知道改变这个数组本身也会改变,增加了长度就是扩展(从后扩展),反之就是截断(从后截断)。

  • shift(): 删除开头

  • unshift(): 添加东西到开头

  • splice(): 很有用且很有意思的函数,可以增加(插入)或者是删除元素,直接操作数组对象不是一个纯函数,插入元素实际上就是删除0个元素,然后把元素传入,有点意思,这个参数就可以简化了,具体api的使用如下:

    • 插入元素:splice(索引, 0, item1, item2, …, item_end),效果就是如果索引是0到length-1就会在前面加上item,如果是length就会是在最末尾加。

*indexof(item),找到item的索引,找到第一个,没找到为-1.

*lastIndexOf(item),找到最后一个,没找到为-1.

  • includes(item),是否包含item。

  • find(callback(x)): 找到第一个满足callback的元素

  • findIndex(callback(x): 跟上面一样,但是是找索引。

  • slice(startIndex, endIndex):截取子段,左闭右开。

  • fill(): 填充,一般用于初始化。

  • 高阶数组的定义:

    • 首先是直接定义了: [[1, 2, 3], [4, 5]]
    • 然后是new Array(x).map().map()链式定义
    • 然后我自己写了一个函数用来生成我想要的高维数组:
      函数主要是两个参数,第一个是数组的维度,例如传入[3, 2, 3],那么就是生成3 * 2 * 3的三维数组(矩阵) ,第二个是默认值。
      /**
    * create a Array 
    * 
    * @param {Array} shapeList 
    * @param {any} defaultValue 
    * @returns newArray
    */const createArray = (shapeList, defaultValue = 0) => {let s = 1let res = new Array(shapeList[0]).fill(defaultValue)let tmp = [res] while(s < shapeList.length) {const low = []for(let i = 0; i < tmp.length; ++ i) {for(let j = 0; j < tmp[i].length; ++ j ) {const cur = new Array(shapeList[s]).fill(0)tmp[i][j] = cur low.push(cur) }}tmp = low s ++; }return res 
    }const res = createArray([3, 4, 5])  
    console.log(res[0][0][0]);
    

重新回顾为不熟悉的,虽然只是一些api的使用,但是我觉得在开发的时候,这些api应该刻在脑子里面,因为太基本了。

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

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

相关文章

转Go学习笔记(2)进阶

前置&#xff1a;转Go学习笔记1语法入门 目录Golang进阶groutine协程并发概念梳理创建goroutine语法channel实现goroutine之间通信channel与range、selectGoModulesGo Modules与GOPATHGo Modules模式用Go Modules初始化项目修改模块的版本依赖关系Go Modules 版本号规范vendor …

无人机3控接力模式技术分析

一、运行方式 1. 接力控制流程 位置触发切换&#xff1a;飞控中心实时监测无人机位置&#xff0c;当进入预设的切换路线&#xff08;如靠近下一个机库或控制器覆盖范围&#xff09;时&#xff0c;触发切换流程。 控制权请求与验证&#xff1a; 当前控制器&#xff08…

Actor Critic对比PGValue-Based

目录 回顾一下policy gradient&#xff1a; QAC算法&#xff1a; A2C- advantage actor critic 问题&#xff1a; 1. 为什么要结合起来&#xff0c;能解决什么问题&#xff1f; 1. 策略梯度 (PG) 的优势与核心问题 2. 基于价值方法 (Value-Based) 的优势与局限性 3. 潜…

buuctf-re

1.findKey 打开是C而且有点乱,所以找关键步骤有一个加密进去是不能反编译的,有花指令, 这里有重复的部分把下面的NOP掉,重新定义函数’p’ 之后分析逻辑, // positive sp value has been detected, the output may be wrong! int __userpurge sub_40191F<eax>(int a1&l…

RuoYi、Vue CLI 和 uni-app 结合构建跨端全家桶方案

将 RuoYi、Vue CLI 和 uni-app 结合构建跨端全家桶方案&#xff0c;可以实现一套代码管理后台系统&#xff08;PC&#xff09;和移动端应用&#xff08;H5/小程序/App&#xff09;。以下是整合思路和关键步骤&#xff1a; 技术栈分工 RuoYi&#xff1a;后端框架&#xff08;Spr…

二十九、windows系统安全---windows注册表安全配置

环境 windows server 2012 原理 注册表简介: 注册表&#xff08;Registry&#xff0c;繁体中文版Windows操作系统称之为登录档&#xff09;是Microsoft Windows中的一个重要的数据库&#xff0c;用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候&#…

Android 一帧绘制流程

Android 一帧绘制流程揭秘&#xff1a;主线程与 RenderThread 的双人舞 核心目标&#xff1a;60帧/秒的丝滑体验&#xff0c;意味着每帧必须在16.67ms内完成所有工作&#xff01; 想象一下屏幕刷新就像放映电影&#xff0c;一帧接一帧。Android系统为了播放这“电影”&#xff…

智能网盘检测软件,一键识别失效链接

软件介绍 今天为大家推荐一款由吾爱论坛大神开发的网盘链接检测工具&#xff0c;专为网络资源爱好者设计&#xff0c;可快速批量检测分享链接的有效性。 核心功能 这款工具能够智能识别各类网盘分享链接的有效状态&#xff0c;用户只需批量粘贴链接&#xff0c;软件便会自…

408第三季part2 - 计算机网络 - 应用层

理解 客户机不能直接通信&#xff0c;要通过服务器才行 P2P可以 先记个名字 看图记查询流程 然后迭代就是 主机到本地 本地先查根&#xff0c;然后返回&#xff0c;再查顶级&#xff0c;然后返回&#xff0c;再查权限 然后注意这里主机到本地都是递归查询&#xff0c;其他的…

Modern C++(七)类

7、类 7.1、类声明 前置声明&#xff1a;声明一个将稍后在此作用域定义的类类型。直到定义出现前&#xff0c;此类名具有不完整类型。当代码仅仅需要用到类的指针或引用时&#xff0c;就可以采用前置声明&#xff0c;无需包含完整的类定义。 前置声明有以下几个作用&#xf…

4-6WPS JS宏自定义函数变长参数函数(实例:自定义多功能数据统计函数)学习笔记

一、自定义函数:自定义多功能数据统计函数。示例1&#xff1a;function jia1(x,...arr){//自定义变长函数&#xff0c;X第一参数&#xff0c;...arr为变长参数可放入无数个参数&#xff0c;就像是数组return xWorksheetFunction.Sum(arr)//返回&#xff0c;X第一参数WorksheetF…

HDMI延长器 vs 分配器 vs KVM切换器 vs 矩阵:技术区别与应用场景

在音视频和计算机信号传输领域&#xff0c;延长器、分配器、切换器和矩阵是四种常见设备&#xff0c;它们的功能和应用场景有显著区别。以下是它们的核心差异对比&#xff1a; 1. 延长器&#xff08;Extender&#xff09; 功能&#xff1a; ▸ 将信号&#xff08;如HDMI、Displ…

从0到1解锁Element-Plus组件二次封装El-Dialog动态调用

技术难题初登场 家人们&#xff0c;最近在开发一个超复杂的后台管理系统项目&#xff0c;里面有各种数据展示、表单提交、权限控制等功能&#xff0c;在这个过程中&#xff0c;我频繁地使用到了element-plus组件库中的el-dialog组件 。它就像一个小弹窗&#xff0c;可以用来显示…

数据结构实验习题

codeblock F2是出控制台 1.1 /* by 1705 WYY */ #include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 #define YES 1 #define NO 0 #define OK 1 #define ERROR 0 #define SUCCESS 1 #define UNSUCCESS 0 #define OVERFLOW -2 #define UNDERF…

PyTorch 2.7深度技术解析:新一代深度学习框架的革命性演进

引言:站在AI基础设施变革的历史节点 在2025年这个充满变革的年份,PyTorch团队于4月23日正式发布了2.7.0版本,随后在6月4日推出了2.7.1补丁版本,标志着这个深度学习领域最具影响力的框架再次迎来了重大突破。这不仅仅是一次常规的版本更新,而是一次面向未来计算架构和AI应…

LTspice仿真10——电容

电路1中电容下标m5&#xff0c;表示5个该电阻并联电路2中ic1.5v&#xff0c;表示电容初始自带电量&#xff0c;电压为1.5v

C#事件驱动编程:标准事件模式完全指南

事件驱动是GUI编程的核心逻辑。当程序被按钮点击、按键或定时器中断时&#xff0c;如何规范处理事件&#xff1f;.NET框架通过EventHandler委托给出了标准答案。 &#x1f50d; 一、EventHandler委托&#xff1a;事件处理的基石 public delegate void EventHandler(object se…

全面的 Spring Boot 整合 RabbitMQ 的 `application.yml` 配置示例

spring:rabbitmq:# 基础连接配置 host: localhost # RabbitMQ 服务器地址port: 5672 # 默认端口username: guest # 默认用户名password: guest # 默认密码virtual-host: / # 虚拟主机&#xff08;默认/&…

Win32 API实现串口辅助类

近期需要使用C++进行串口通讯,将Win32 API串口接口进行了下封装,可实现同步通讯,异步回调通讯 1、SerialportMy.h #pragma once #include <Windows.h> #include <thread> #include <atomic> #include <functional> #include <queue> #inclu…

Python-执行系统命令-subprocess

1 需求 2 接口 3 示例 4 参考资料 Python subprocess 模块 | 菜鸟教程