当前位置: 首页 > news >正文

JavaScript学习小记(1)基本数据结构(数组,字符串)

一个寒假确实过的很快,这个寒假除了调包调参突然心血来潮想学一下前端,学习过程比较平滑,我是自己找的技术文档+写代码实践来学习的,教程视频虽然详细,但是真的一点都看不动。

目录

  • JS如何定义变量的
    • 老旧的var
    • let定义是推荐使用的。
  • JS中的数组
    • concat方法会返回一个连接后的新数组,不会改变原数组
    • 遍历数组的一些方法:
    • 查找元素的一些方法:
    • 在数组中查找
    • 对数组每个元素操作,返回一个新数组,map操作
    • 数组和字符串之间的转化
    • splice方法非常好用,既可以删除元素也可以填充修改
    • 对比数组是否相等时,请使用(===)而不是(==)
    • Reduce方法(函数操作应用到每个数组的元素上)
  • JS 中的字符串
    • 访问
    • 查找
    • 切片
    • Unicode(charCodeAt()和toString())

JS如何定义变量的

老旧的var

在一些比较古早的教材中,定义js变量通常使用的是var。虽然是大家经常写的做法,但是不推荐这么做因为他又两点坏处

  • var 关键字只有函数作用域全局作用域
if (true) {var flag = False;
}
console.log(flag); // 这个时候显示的是False,意味着这个变量在循环过后依旧存在
  • 关于var存在变量提升的问题
a = 0
var a 
console.log(a) // 0

声明的语句可以视为自动提升到文档的顶部

  • var关键字可以重新定义不报错

let定义是推荐使用的。

JS中的数组

常用的方法有

let a = [2, 3, 4 ,5]let size_a = a.length // 是数组的一个属性a.unshift(['a','b'])console.log(`a数组的长度为${size_a}`)
console.log(`a 数组经过 unshift 后变成了a: ${a}`)//a 数组经过 unshift 后变成了a: a,b,2,3,4,5a.shift()
console.log(`a 数组经过一次shift操作的变化a: ${a}`)//a 数组经过一次shift操作的变化a: 2,3,4,5
// 这会除掉一次性unshift加入头部的元素a.concat(['concat']) // concat 操作会返回一个新数组所以这里
console.log(`进行concat 操作后的 a: ${a}`) // 进行concat 操作后的 a: 2,3,4,5let new_a = a.concat(['concat']) 
console.log(`返回的新数组为${new_a}`) // 返回的新数组为2,3,4,5,concatconsole.log(`查找元素2 : ${a.indexOf(2)}`) // 查找对应的索引let b = a.slice(1,3)
console.log(`b 截取的子串为 ${b}`) // [ , ) 方式截取的子串let c = []for (let i = 0 ; i < 10 ; i++){c[i] = i
}console.log(`数组c是:${c}`)
console.log(`转置后的数组c是${c.reverse()}`)
console.log(`排序后的转置数组c ${c.reverse().sort()}`)console.log(`在0-3这个位置删除掉元素然后添加4个字母,删除掉的元素为${c.splice(0,4,'a','b','c',)}`)
//在0-3这个位置删除掉元素然后添加4个字母,删除掉的元素为0,1,2,3
console.log(c) // 这个操作会直接影响数组c,而不是返回新的数组
//[
//  'a', 'b', 'c', 4, 5,
//  6,   7,   8,   9
//]console.log(`将数组c的所有元素使用一个符号连接 ":" ${c.join(':')}`)
//将数组c的所有元素使用一个符号连接 ":" a:b:c:4:5:6:7:8:9

concat方法会返回一个连接后的新数组,不会改变原数组

遍历数组的一些方法:

  • arr.forEach(function(value,index,arr){ …do something})
  • for(let i = 0 ; i < arr.lenght; i++){}
  • for(let i of arr){}

查找元素的一些方法:

  • indexOf()
  • lastIndexof()
    以上两种办法接受,(value,from)从from开始查询,找到了value就返回索引,找不到返回-1
    还有另外一种只检查是否涵盖
  • includes()
    用法一样,返回的真假

在数组中查找

let users = [{id: 1, name: "John"},{id: 2, name: "Pete"},{id: 3, name: "Mary"}
];let user = users.find(item => item.id == 1);//返回值
let user1 = user.findIndex(item => item.id ==1);//返回索引
let user2 =  user.findLastIndex();//同上alert(user.name); // John

对数组每个元素操作,返回一个新数组,map操作

let result = arr.map(function(item, index, array) {// 返回新值而不是当前元素
})

数组和字符串之间的转化

let a = [1,1,2,3,2,34,45]
let b = a.join(",") // 1,1,2,3,2,34,45
console.log(b)
let c = b.split(",")
console.log(c) // [ '1',  '1', '2', '3',  '2', '34', '45' ]

splice方法非常好用,既可以删除元素也可以填充修改

arr.splice(start[, deleteCount, elem1, …, elemN])

对比数组是否相等时,请使用(=)而不是(

因为 == 对比的是两个变量引用的是同一个对象才会相等,他也会存在类型转换

0 = []  // true 因为空[]被转化为0

Reduce方法(函数操作应用到每个数组的元素上)

let value = arr.reduce(function(accumulator, item, index, array) {// accumulator为上一次函数的返回值,initial为初始值
}, [initial]);

JS 中的字符串

JS中创建好的字符串变量是不可以直接通过索引修改的,必须用新的变量存储

访问

使用方括号的数字索引来。

查找

使用string.indexOf(character)来查找

切片

  • 使用slice(start,end) # [ )区间
  • 使用substring(start,end) # 同上
  • 使用substr(start,length)

Unicode(charCodeAt()和toString())

所有的字符串都使用 UTF-16 编码
String 的 charCodeAt() 方法返回一个整数,表示给定索引处的 UTF-16 码元,其值介于 0 和 65535 之间。
toString()方法返回一个表示该对象的字符串

function Dog(name) {this.name = name;
}const dog1 = new Dog('Gabby');
let dog2 = Dog('agg');//没有使用new创建实例,无意义Dog.prototype.toString = function dogToString() {return `${this.name}`;
};console.log(dog1.toString());

相关文章:

JavaScript学习小记(1)基本数据结构(数组,字符串)

一个寒假确实过的很快&#xff0c;这个寒假除了调包调参突然心血来潮想学一下前端&#xff0c;学习过程比较平滑&#xff0c;我是自己找的技术文档&#xff0b;写代码实践来学习的&#xff0c;教程视频虽然详细&#xff0c;但是真的一点都看不动。 目录 JS如何定义变量的老旧的…...

python opencv实现车牌识别

目录 一:实现步骤: 二:实现车牌检测 一:实现步骤: 使用Python和OpenCV实现车牌识别的步骤大致可以分为以下两部分: 车牌检测: 读取需要进行车牌识别的图片。 对图像进行灰度化处理,可能还包括高斯模糊和灰度拉伸。 进行开运算,消除图像中的噪声。 将灰度拉伸后的图…...

K8S节点GPU虚拟化(vGPU)

vGPU实现方案 4paradigm提供了k8s-device-plugin,该插件基于NVIDIA官方插件(NVIDIA/k8s-device-plugin),在保留官方功能的基础上,实现了对物理GPU进行切分,并对显存和计算单元进行限制,从而模拟出多张小的vGPU卡。在k8s集群中,基于这些切分后的vGPU进行调度,使不同的容器…...

NLP 使用Word2vec实现文本分类

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.com/…...

【Redis学习笔记03】Java客户端

1. 初识Jedis Jedis的官网地址&#xff1a;https://github.com/redis/jedis 1.1 快速入门 使用步骤&#xff1a; 注意&#xff1a;如果是云服务器用户使用redis需要先配置防火墙&#xff01; 引入maven依赖 <dependencies><!-- 引入Jedis依赖 --><dependency&g…...

神经网络系列---激活函数

文章目录 激活函数Sigmoid 激活函数Tanh激活函数ReLU激活函数Leaky ReLU激活函数Parametric ReLU激活函数 &#xff08;自适应Leaky ReLU激活函数&#xff09;ELU激活函数SeLU激活函数Softmax 激活函数Swish 激活函数Maxout激活函数Softplus激活函数 激活函数 一般来说&#xf…...

python中continue的对比理解

# 使用while循环&#xff0c;输入1-10之间的数字&#xff0c;除7之外。 以下为代码对比&#xff1a; # 使用while循环&#xff0c;输入1-10之间的数字&#xff0c;除7之外。 # 第一种方式 num 0 while num < 10:num num 1if num 7:print("")else:print(num)…...

Amazon Generative AI | 基于 Amazon 扩散模型原理的代码实践之采样篇

以前通过论文介绍 Amazon 生成式 AI 和大语言模型&#xff08;LLMs&#xff09;的主要原理之外&#xff0c;在代码实践环节主要还是局限于是引入预训练模型、在预训练模型基础上做微调、使用 API 等等。很多开发人员觉得还不过瘾&#xff0c;希望内容可以更加深入。因此&#x…...

[服务器-数据库]MongoDBv7.0.4不支持ipv6访问

文章目录 MongoDBv7.0.4不支持ipv6访问错误描述问题分析错误原因解决方式 MongoDBv7.0.4不支持ipv6访问 错误描述 报错如下描述 Cannot connect to MongoDB.No suitable servers found: serverSelectionTimeoutMS expired: [failed to resolve 2408]问题分析 首先确定其是…...

【b站咸虾米】chapter5_uniapp-API_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

课程地址&#xff1a;【新课uniapp零基础入门到项目打包&#xff08;微信小程序/H5/vue/安卓apk&#xff09;全掌握】 https://www.bilibili.com/video/BV1mT411K7nW/?p12&share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 5 API 5.1 页面和路…...

自学Python第十八天-自动化测试框架(二):DrissionPage、appium

自学Python第十八天-自动化测试框架&#xff08;二&#xff09;&#xff1a;DrissionPage、appium DrissionPage环境和安装配置准备工作简单的使用示例控制浏览器收发数据包模式切换 浏览器模式创建浏览器对象访问页面加载模式none 模式技巧 获取页面信息页面交互查找元素ele()…...

云尚办公-0.3.0

5. controller层 import pers.beiluo.yunshangoffice.model.system.SysRole; import pers.beiluo.yunshangoffice.service.SysRoleService;import java.util.List;//RestController&#xff1a;1.该类是控制器&#xff1b;2.方法返回值会被写进响应报文的报文体&#xff0c;而…...

汇编英文全称

mov move mvn Mov Negative ldr LoaD Register str Store Register lsl Logic Shift Left lsr Logic Shift Right asr Arithmetic Shift Right 算数右移 ror Rotate right 循环右移…...

基于虚拟力优化的无线传感器网络覆盖率matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 虚拟力优化算法 4.2 覆盖覆盖率计算 5.完整程序 1.程序功能描述 基于虚拟力优化的无线传感器网络覆盖率&#xff0c;仿真输出优化前后的网络覆盖率&#xff0c;覆盖率优化收敛迭代曲线…...

阿里云-系统盘-磁盘扩容

阿里云系统磁盘扩容 之前是测试环境磁盘用的默认的有 40G&#xff0c;后面升级到正式的 磁盘怕不够用打算升级到 100G&#xff0c; 系统镜像&#xff1a; Alibaba Cloud Linux 3.2104 LTS 64 位 磁盘 ESSD 40G 升级步骤&#xff1a; 扩容与创建快照 在阿里云后台首先去扩容…...

libmmd.dll修复

libmmd.dll 是与Intel Math Kernel Library (MKL) 相关的动态链接库文件&#xff0c;通常用于数学和科学计算。 最常出现的错误信息是&#xff1a; 程序无法启动&#xff0c;因为您的计算机缺少 libmmd.dll 。尝试重新安装程序来解决这个问题。 启动 libmmd.dll 发生错误。无法…...

大数据时代的明星助手:数据可视化引领新风潮

在大数据时代的浪潮中&#xff0c;数据可视化如一位巧夺天工的画师&#xff0c;为我们描绘出庞大而丰富的信息画卷&#xff0c;为我们提供了直观、清晰、高效的数据呈现方式。下面我就以可视化从业者的角度&#xff0c;来简单聊聊这个话题。 数据可视化首先在信息管理和理解方面…...

设计模式--享元模式和组合模式

享元模式 享元模式&#xff08;Flyweight Pattern&#xff09;又称为轻量模式&#xff0c;是对象池的一种实现。类似于线程池&#xff0c;线程池可以避免不停的创建和销毁多个对象&#xff0c;销毁性能。提供了减少对象数量从而改善应用所需的对象结构的方式。其宗旨是共享细粒…...

基于Java springmvc+mybatis酒店信息管理系统设计和实现

基于Java springmvcmybatis酒店信息管理系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获…...

leetcode-找不同

389. 找不同 题解&#xff1a; 从题意我们可以知道&#xff0c;虽然 t 是由 s组成&#xff0c;但是 t中又随机添加了一个字符&#xff0c;也就是相当于 t 包含 s,我们使用字典&#xff0c;将 t 转换成字典对应关系t_map&#xff0c;然后遍历 s 中的字符&#xff0c;若存在&am…...

笔记本hp6930p安装Android-x86避坑日记

一、序言 农历癸卯年前大扫除&#xff0c;翻出老机hp6930p&#xff0c;闲来无事&#xff0c;便安装Android-x86玩玩&#xff0c;期间多次入坑&#xff0c;随手记之以避坑。 笔记本配置&#xff1a;T9600,4G内存&#xff0c;120G固态160G机械硬盘 二、Android-x86系统简介 官…...

zabbix监控业务数据

前言 监控系统除了监控os和数据库性能相关的指标外&#xff0c;业务数据也是重点监控的对象。 一线驻场的运维同学应该深有体会&#xff0c;每天需要向甲方或者公司反馈现场的数据情况&#xff0c;正常情况下一天巡检两次&#xff0c;早上上班后和下午下班前各一次。监控项目…...

access数据库泄露与IIS短文件名利用

access数据库 Microsoft Office Access是微软把 数据库引擎 的图形用户界面和 软件开发工具 结合在一起的一个 数据库管理系统 它的数据库是没有库名的&#xff0c;都是表名。 (借用别的up的图)是不是感觉有点像excel access数据库的后缀是.mdb access数据库泄露漏洞 如果…...

MySQL 篇-深入了解 DDL 语言(一)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 MySQL 说明 2.0 DDL 语言 2.1 DDL 语言 - 定义数据库 2.1.1 创建数据库操作 2.1.2 查看数据库操作 2.1.3 使用数据库操作 2.1.4 删除数据库操作 2.2 DDL 语言 …...

MT8788|MTK8788安卓核心板参数_4G联发科MTK模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块。该模块采用了联发科AIOT芯片平台&#xff0c;具有长达8年的生命周期。MT8788模块内置了12nm制程的八核处理器&#xff0c;包括4个Cortex A73和4个Coretex A53&#xff0c;主频最高可达2.0GHZ。标配内存为4GB64GB&#xff0c…...

EXCEL 在列不同单元格之间插入N个空行

1、第一步数据&#xff0c;要求在每个数字之间之间插入3个空格 2、拿数据个数*&#xff08;要插入空格数1&#xff09; 19*4 3、填充 4、复制数据到D列 5、下拉数据&#xff0c;选择复制填充这样1-19就会重复4次 6、全选数据D列排序&#xff0c;这样即完成了插入空格 以…...

Linux快速修改ip地址

Linux修改IP配置 一 、查找ip配置文件 ifcfg-ens33二、编辑 vi ifcfg-ens33文件三、重启网络或者重启系统 一 、查找ip配置文件 ifcfg-ens33 cd /etc/sysconfig/network-scripts/ls //查看network-scripts文件夹下面的文件二、编辑 vi ifcfg-ens33文件 vi ifcfg-ens33注意&…...

采用遗传算法搜索MAC效率最高的矩阵乘规模

如何采用遗传算法搜索MAC效率最高的矩阵乘规模 具体实现MAC效率评估代码(eval.py)遗传算法实现 本文介绍了采用遗传算法搜索MAC效率最高的矩阵乘规模 需求背景: 一些AI加速卡在做矩阵乘时,因硬件或软件的约束,并不是规模越大MAC效率越高在测试AI加卡的实际算力时,采用MAC效率最…...

流计算之Flink

文章目录 概要有界无界流集群JobManagerTaskManagersTasks 和算子链Task Slots 和资源 小结 概要 Apache Flink 是一个框架和分布式处理引擎&#xff0c;用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行&#xff0c;并能以内存速度和任意规模…...

【Linux基础】Linux自动化构建工具make/makefile

背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff0c;哪些文件需要先编译&#xff0c;哪些文件需要后…...

wordpress可以做电影网站吗/移动排名提升软件

普通ASCII码空格为32&#xff0c;但是浏览器会对普通空格进行自动归并&#xff0c;也就是如果你输入10个0x20的空格在HTML页面里面&#xff0c;可能会被合并成一个空格。如果想要一致的呈现多个空格&#xff0c;就要用到&nbsp&#xff0c;这个空格的编码为160&#xff0c;为…...

盐城做网站哪家好/视频营销模式有哪些

解决方法&#xff1a; 在连接mysql数据库的时候添加 useOldAliasMetadataBehaviortrue 这个参数 例如&#xff1a;url jdbc:mysql://127.0.0.1:3306/basicsale_b2b2c?useUnicodetrue&characterEncodingutf-8&useOldAliasMetadataBehaviortrue...

网站建设合同审查/网站怎么制作

使用场景 在多个线程对同一个共享资源进行读写操作时&#xff0c;由于代码的执行序列的不确定会导致结果不可预测&#xff1b;为了避免这情况的发生&#xff0c;java 提供了多种解决方案来达到目的&#xff1b; 阻塞式&#xff1a;synchronized、reentrantLock非阻塞&#xff…...

制作网站题材/百度营销app

酷播云的全终端调用代码范例&#xff0c;支持pc&#xff0c;手机&#xff0c;微信观看 多终端 &#xff08;推荐使用&#xff0c;该代码可自动兼容微信、手机、PC、平板、智能电视终端&#xff09; <script src//player.polyv.net/script/polyvplayer.min.js></scri…...

广州外贸营销网站建设公司/东莞今天新增加的情况

项目源码&#xff1a;点击查看项目源码 前面两天我们了解完docker原理之后&#xff0c;今天我们动手把项目的结构给搭起来&#xff0c;先总体看一下项目结构 整个文件调用过程如下 我们最终达到的效果实现下面这个命令&#xff0c;该命令会启动一个隔离的容器&#xff0c;并在…...

惠州网站制作公司/关键词排名查询api

bgwriter.c 的代码中有如下部分&#xff1a; pqsignal(SIGQUIT, bg_quickdie); /* hard crash time */ [作者&#xff1a;技术者高健博客园 mail: luckyjackgaogmail.com ] 还有&#xff1a; /** bg_quickdie() occurs when signalled SIGQUIT by the postmaster.** So…...