01-JavaScript-数据类型

js数据类型分为基本数据类型引用数据类型两大类

一、基本数据类型

值存在栈中,赋值传值

1.1、数字类型Number

js中,数字是不区分整数还是小数的,当数字无限大时,用Infinity表示,计算的时候出现错误,用NaN表示非数。

let a = 123;
let b = 1.23;
let c = -29;
let a = 10;
let b = 'qwer';
console.log(a/c); // NaN
console.log(2/0); // Infinity

数字的常见操作

let a = 1 + 1;
let b = 2 - 1;
let c = 2 * 2;
let d = 4 / 2;
let e = 5 % 2; // 取余 1

使用Math对象中提供的方法进行数值操作:

  • 向下取整,Math.floor()方法
let a = Math.floor(2.47); // 2
  • 向上取整,Math.ceil()方法
let a = Math.ceil(2.47); // 3
  • 四舍五入,Math.round()方法
let a = Math.ceil(2.47); // 2
let a = Math.ceil(2.57); // 3
  • 格式化成特定位数小数的字符串,toFixed()方法
let a = 1.2345; 
let b = a.toFixed(2); // 1.23
  • 随机数,Math.random()方法
let a = Math.random(); // 随机一个0-1的数,不包含1
let b = Math.floor(Math.random()*100); // 随机一个0-99的整数
  • 数值判断,isNaN()方法来判断是否是数字,isFinite()方法来判断一个值是否为有限数值
let a = 'test';
let b = 12.34;
let c = isNaN(a); // true
let d = isFinite(b); // true

1.2、字符串String

定义方式

let str1 = 'test';
let str2 = "test";
let str3 = `test`

字符串操作方法:

  • length 获取字符串长度
let str = 'abcdefg';
let len str.length; // 7
  • charAt()、charCodeAt() 获取指定位置的值
let str = 'abcdefg';
let char = str.charAt(1); // b 指定位置的值
let charCode = str.charCodeAt(1); // 98 该字符code码
  • indexOf()、lastIndexOf()、includes()、startsWith()、endsWith() 是否包含特定字符
let str = 'abcabc';
let v = str.indexOf('b');  // 1 包含第一个b的序号,不包含则返回-1
let vLast = str.lastIndexOf('b');  // 4 包含最后一个b的序号
let vFlag =  str.includes('b'); // true  是否包含b
let sFlag = str.startsWith('a'); // true 开始是否包含a
let eFlag = str.endsWith('a'); // false 结尾是否包含a
  • concat 拼接字符串
let str1 = 'abc';
let str2 = 'def';
let str3 = str2.concat(str1); // defabc
  • split 按照特定字符拆分成数组
let str = 'a,b,c,d,e,f';
let arr = str.split(',');    // ['a', 'b', 'c', 'd', 'e', 'f']
  • slice(start,end)、substring(start,end)、substr(start,length) 截取字符串
let str = 'abcdefgh';
let sliceStr = str.slice(1,5);  // bcde
let substringStr = str.substring(1,5); // bcde
let substrStr = str.substr(1,5); // bcdef
  • toLowerCase()、toUpperCase() 字符串大小写转换

  • replace()、match()、search() 字符串模式匹配

  • trim()、trimStart()、trimEnd() 移除字符串收尾空白符

  • valueOf()、toString() 获取字符串

  • padStart()、padEnd() 补齐字符串长度

  • parseInt()、parseFloat() 字符串转为数字

1.3、undefined数据未定义

定义了一个变量,但没有给变量赋值

let str;
console.log(str); // undefined

1.4、null 空数据

let str = null;
console.log(str); // null

1.5、Boolean布尔类型

1.6、Symbol

基本数据类型,用来表示独一无二的值,避免同名属性被覆盖。

let str = Symbol('test');
console.log(str); // Symbol(test)

1.7、BigInt

BigInt不能用于Math对象中的方法

let n = 10n;
let m = BigInt(10)

二、引用数据类型

值存在堆中,赋值传址

2.1、object

2.1.1 对象object

2.1.2 时间Date

2.1.3 正则RegExp

2.1.4 数学Math

2.1.5 数组Array

数组操作:

  • 赋值操作
let arr = [1, 2, 3]
arr.length = 5;
console.log(arr) //  [1, 2, 3, empty × 2]
  • 索引查询indexOf
let arr = [1, 2, 3]
console.log(arr.indexOf(2)) // 1
console.log(arr.indexOf(5)) // -1
  • slice
    截取数组部分元素,并返回一个新数组
   let arr = [1, 2, 3]let arrNew = arr.slice(0,2)console.log(arrNew) //[1, 2]   是一个左闭右开区间
  • push和pop
    push末尾添加若干元素,pop把数组最后一个元素删除
   let arr = [1, 2, 3]let arrNew = arr.push(4)console.log(arrNew) //4console.log(arr) // [1, 2, 3, 4]let arrNewPop = arr.pop()console.log(arrNewPop) //4console.log(arr) //[1, 2, 3]
  • unshift和shift
    unshift头部添加若干元素,shift把数组第一个元素删除
  • sort
    数组排序,可传入一个函数,按照自定义规则进行排序
    let arr = [1, 2, 3, 11, 5, 44, 66, 15]arr.sort();console.log(arr) //[1, 11, 15, 2, 3, 44, 5, 66]function sortFun(a,b) {return a-b;}arr.sort(sortFun)console.log(arr) //  [1, 2, 3, 5, 11, 15, 44, 66]
  • reverse
    arr.reverse() 数组元素反转
  • splice
    从指定的索引开始删除若干元素,然后再从该位置添加若干元素
   let arr = ['诸葛亮', '刘备', '关羽', '张飞']// 只删除,不添加arr.splice(2,1)console.log(arr) //  ['诸葛亮', '刘备', '张飞']// 删除,再添加arr.splice(2,1, '孙悟空', '猪八戒')console.log(arr) // ['诸葛亮', '刘备', '孙悟空', '猪八戒']// 只添加,不删除arr.splice(2,0, '唐僧')console.log(arr) // ['诸葛亮', '刘备', '唐僧', '孙悟空', '猪八戒']
  • concat
    把当前数据与另一个数组元素进行拼接,并返回一个新的数组
   let arr = ['诸葛亮', '刘备']let arr2 = ['关羽', '张飞']let arrNew = arr.concat(arr2);console.log(arrNew) //['诸葛亮', '刘备', '关羽', '张飞']
  • join
    把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串
   let arr = ['诸葛亮', '刘备', '关羽', '张飞']let str = arr.join(',')console.log(str) //诸葛亮,刘备,关羽,张飞
  • Set数据结构类型
   let a = [1,1,2,3,3,2,3,4,5,6,7,3,2,3,4,5,3,2,2]let b = [...new Set(a)]console.log(b) //[1, 2, 3, 4, 5, 6, 7]
  • forEach
    遍历数组全部元素,利用回调函数对数组进行操作,自动遍历数组.length次,且无法break中途跳出循环,不可控不支持return操作输出,return只用于控制循环是否跳出当前循环
  • map
    不改变原数组,返回一个return操作后的新数组
   let a = [1,2,3,4]let b = a.map(item=>{return item * 2})console.log(a) //[1, 2, 3, 4]console.log(b) //[2, 4, 6, 8]
  • filter
    不改变原数组,返回一个新数组,满足筛选条件后的新数组
 let a = [1,2,3,4]let b = a.filter(item=>{return item > 2})console.log(a) //[1, 2, 3, 4]console.log(b) //[3, 4]
  • includes
    Array.includes() 是否包含某个元素,返回true或false
  • find
    不改变原数组,返回的是满足条件的数组元素( 判断为true 则跳出循环输出符合条件的数组元素)
   let a = [1,2,3,4]let b = a.find(item=>{return item > 2})console.log(a) //[1, 2, 3, 4]console.log(b) //3
  • findIndex
    和find相同,不改变原数组,返回的是满足条件的数组元素序号,
   let a = [1,2,3,4]let b = a.findIndex(item=>{return item > 2})console.log(a) //[1, 2, 3, 4]console.log(b) //2
  • some
    不改变原数组,输出的是判断为true则马上跳出循环并return成true
   let a = [1,2,3,4]let b = a.some(item=>{return item > 2})console.log(a) //[1, 2, 3, 4]console.log(b) //true
  • every
    用于检测数组中的元素是否都满足return的判断条件,只要有一个不符合就会返回false,都符合才返回true。
    let a = [1,2,3,4]let b = a.every(item=>{return item > 2})console.log(a) //[1, 2, 3, 4]console.log(b) //false

2.2、function

2.3、键值对(Map)

ES6 新增的数据类型,用于存储键值对的集合数据

let m = new Map();
m.set('诸葛亮', 58)
m.set('刘备', 38)
m.set('张飞', 35)
console.log(m.has('刘备')) // 是否存在key: true
console.log(m.get('诸葛亮')) // 58
console.log(m.delete('刘备')) // 删除key
console.log(m.get('刘备')) // undefined

2.4、集合(Set)

是 ES6 新增的数据类型,是一组key的集合,但不存储value,由于key不能重复,所以用于存储不重复的数据集合

let s = new Set()
let s1 = new Set([1,2,3,3,'3'])
console.log(s) //{size: 0}
console.log(s1) //{1, 2, 3, '3'}
s.add(1)
s1.add(1)
console.log(s) //{1}
console.log(s1) //{1, 2, 3, '3'}
s1.delete(1)//
console.log(s1) //{2, 3, '3'}

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

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

相关文章

cms之帝国cms安装

内容摘要 帝国网站管理系统,英文名称为EmpireCMS,简称“帝国CMS”,本文将介绍帝国网站管理系统的安装方法。 前言: 本文安装教程是以帝国CMS7.5版本为基础进行图文讲解。 各位看官,一定要按照每个步骤去执行&#xf…

LightDB-A 兼容oracle支持mod操作符

LightDB-A 兼容oracle支持mod操作符 LightDB-A 为了兼容oracle,从23.3版本开始支持mod操作符,其语义同 ‘%’ 操作符,使用案例如下: select 5 mod 2;?column? ----------1 (1 row)select 0 % 0; ERROR: division by zerosel…

背巾CPC认证检测标准详解

背巾设计用于在看护人的躯干支撑下,以直立或倾斜的姿势容纳最多两名儿童。它是为婴儿(足月儿)至体重 35 磅的儿童设计的(除非制造商表明其产品可以支撑更高的体重限制)。背巾由织物制成,有多种非结构化式样…

【Django入门】第一个Django项目

Django,广为人知的Python Web框架,以其强大而又灵活的特点脱颖而出。其宣传口号是:“为完美主义者开发的框架”。这篇文章将为你揭示创建第一个Django项目的魔法以及Django项目的基本结构。 为什么选择Django? 在深入学习前&…

基于SSM的博客系统开发

文章目录 前言1.技术选型:2.主要功能:3.项目展示:前台页面:后台页面: 总结 前言 提示:人类与强权的斗争,就是记忆与遗忘的斗争。 --米兰昆德拉《笑忘录》 1.技术选型: 开发工具&am…

vue 01 创建一个简单vue页面

去vue官网下载vue.js 引用vue.js vue语法 一个vue实例&#xff0c;绑定一个容器&#xff0c;一对一关系 <!DOCTYPE html> <html><head><meta charset"UTF-8"/><title>初始Vue</title><script type"text/javascript&qu…

【JAVASE】图书管理系统

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 图书管理系统 1. 设计思路图2. 创建 boo…

MySQL常见面试题(一)

&#x1f600;前言 在数据库管理系统中&#xff0c;存储引擎起着核心的角色&#xff0c;它决定了数据管理和存储的方式。MySQL作为一个领先的开源关系型数据库管理系统&#xff0c;提供了多种存储引擎来满足不同的需求和优化不同的应用。除了选择合适的存储引擎&#xff0c;数据…

无人机顶会顶刊2023

无人机顶会顶刊2023 国际期刊1、Science Robotics2、IEEE Transactions on Robotics(TRO)3、IEEE Transactions on Automation Science and Engineering&#xff08;TASE&#xff09;4、International Journal of Robotics Research(IJRR)5、IEEE Robotics and Automation Lett…

四川百幕晟科技:抖店精选联盟怎么使用?

近年来&#xff0c;电商平台的兴起让很多人纷纷加入进来&#xff0c;希望通过在网上销售产品来赚取更多的利润。在这个竞争激烈的市场中&#xff0c;如何找到稳定的渠道来推广自己的产品成为了每个卖家的追求。抖店精选联盟是一个不错的选择&#xff0c;可以帮助卖家快速提升销…

Mybatis学习笔记8 查询返回专题

Mybatis学习笔记7 参数处理专题_biubiubiu0706的博客-CSDN博客 1.返回实体类 2.返回List<实体类> 3.返回Map 4.返回List<Map> 5.返回Map<String,Map> 6.resultMap结果集映射 7.返回总记录条数 新建模块 依赖 目录结构 1.返回实体类 如果返回多条,用…

Request body too large. The max request body size is 30000000 bytes.

调用 .Net Core 6.0 Web API 报错&#xff1a;Request body too large. The max request body size is 30000000 bytes. Startup.cs增加如下内容&#xff1a; services.Configure<KestrelServerOptions>(options >{options.Limits.MaxRequestBodySize int.MaxValue;}…

c++模板到底是什么?

一、语法设计上 从c语言的设计和演进得知c之父设计模板的主要目的就是替代c语言的宏定义&#xff0c;觉得宏过于松散&#xff0c;因此才设计了模板&#xff0c;使之宏能做到的事&#xff0c;模板也能&#xff0c;而且做到的更优雅。 二、标准库的使用上 c著名的stl库&#xff0…

PDF文件的页眉页脚无法删除的原因和三种替代方法

大家好&#xff01; 今天六分职场为大家介绍一个PDF的常用操作。有的时候我们需要为PDF文件添加页眉页脚&#xff0c;但如果我们这个PDF文档是从其他地方参考的&#xff0c;经常会发现无法直接编辑或者删除PDF文件中页眉页脚。 不用担心&#xff0c;我们使用WPS的PDF软件&…

《C++标准库第2版》3.2 虽旧犹新的语言特性 笔记

3.2 虽旧犹新的语言特性 非类型模板参数 1.除了类型参数之外&#xff0c;我们也可以为template使用nontype paramatter. 2.非类型参数看作是template类型的一部分 bitset<32> flags32; bitset<50> flags50; // 这两个看作是两个不同类型的template模板参数默认…

牛客网字节面试算法刷题记录

NC78 反转链表 public ListNode ReverseList (ListNode head) {if(headnull) return head;ListNode phead.next,q,tailhead;tail.next null;while(p!null){q p.next;p.next tail;tail p;p q;}return tail;} NC140 排序 冒泡排序 public int[] MySort (int[] arr) {for…

计算机竞赛 深度学习 opencv python 实现中国交通标志识别

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

Go面试题:锁的实现原理sync-mutex篇

在Go中&#xff0c;主要实现了两种锁&#xff1a;sync.Mutex(互斥锁) 以及 sync.RWMutex(读写锁)。 本篇主要给大家介绍sync.Mutex的使用和实现原理。 文章目录 为什么需要锁在Go中对于并发程序进行公共资源的访问的限制最常用的就是互斥锁&#xff08;sync.mutex&#xff09…

git branch -r 远程分支显示不全

找回csdn帐号了&#xff0c;计划陆续开始更新最近的笔记√ 没想到很久没登还有人在看 问题描述 git 查看项目远程分支&#xff1a; git branch -r返回结果很少。但GitHub页面上能看到很多的分支。 尝试git remote update&#xff0c;发现结果仍然如此。 PS C:\Users\dell\g…

AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现

目录 前言 国内外研究现状 国外研究现状 国内研究现状 2 AUTOSAR规范及开发流程