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) //4
   console.log(arr) // [1, 2, 3, 4]
   let arrNewPop = arr.pop()
   console.log(arrNewPop) //4
   console.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'}

你可能感兴趣的:(JavaScript,javascript,开发语言)