JavaScript 数据类型与核心用法速览,涵盖原始类型包装、常用数据结构操作、对象转换及 JSON 处理。
原始类型对象
1 | let str = "Hello"; |
很简单,对吧?以下是 str.toUpperCase()
中实际发生的情况:
- 字符串
str
是一个原始值。因此,在访问其属性时,会创建一个包含字符串字面值的特殊对象,并且具有可用的方法,例如toUpperCase()
。 - 该方法运行并返回一个新的字符串(由
alert
显示)。 - 特殊对象被销毁,只留下原始值
str
。
即原始类型在调用方法时,会自动生成一个对象[String Number Boolean Symbol BigInt]。没有undefined和null
数字
Math对象
与python,Java提供的API类似。
1 | Math.floor |
Number对象
1 | let num = 255; |
字符串
str.codePointAt(pos):返回在 pos
位置的字符代码。
String.fromCodePoint(code):通过数字 code
创建字符。
str.substring(start, end)
str.trim(): 删除字符串前后的空格。
str.repeat(n)
:重复字符串 n
次。
数组
声明和初始化
1 | let arr = new Array(); |
负索引:
arr.at(i)
- 如果
i >= 0
,则与arr[i]
完全相同。 - 对于
i
为负数的情况,它则从数组的尾部向前数。
添加/删除
push
在末端添加一个元素shift
取出队列首端的一个元素pop
从末端取出一个元素unshift
在队列首端加一个元素
push
和 unshift
方法都可以一次添加多个元素:
1 | let fruits = ["Apple"]; |
splice
1 | arr.splice(start[, deleteCount, elem1, ..., elemN]) |
它从索引 start
开始修改 arr
:删除
deleteCount
个元素并在当前位置插入
elem1, ..., elemN
。最后返回被删除的元素所组成的数组。
1 | let arr = ["I", "study", "JavaScript", "right", "now"]; |
slice
1 | arr.slice([start], [end]) |
数组赋值,与字符串切片类似。
concat
1 | arr.concat(arg1, arg2...) |
数组会被展开。
forEach
1 | arr.forEach(function(item, index, array) { |
find
与forEach类似,只传入一个参数时,默认传入的是item。
1 | let result = arr.find(function(item, index, array) { |
findIndex/findLastIndex
与arr.find
具有相同的语法,但它返回找到的元素的索引,而不是元素本身。如果没找到,则返回-1
。
filter
语法与find
大致相同,但是filter
返回的是所有匹配元素组成的数组:
1 | let results = arr.filter(function(item, index, array) { |
map
对数组的每个元素都调用函数,并返回结果数组。
1 | let result = arr.map(function(item, index, array) { |
sort
默认会当成字符串类型排序。
1 | // 数字从小到大 |
Array.from(arrayLike, mapFn)
将类数组或可迭代对象转换成数组。
Map
new Map()
—— 创建 map。map.set(key, value)
—— 根据键存储值。map.get(key)
—— 根据键来返回值,如果map
中不存在对应的key
,则返回undefined
。map.has(key)
—— 如果key
存在则返回true
,否则返回false
。map.delete(key)
—— 删除指定键的值。map.clear()
—— 清空 map。map.size
—— 返回当前元素个数。map.forEach
((value, key, map) => {}
map中的key类型可以是任意类型(不同于对象,key只能为str或Symbol)。
1 | let map = new Map([ |
Set
new Set(iterable)
—— 创建一个set
,如果提供了一个iterable
对象(通常是数组),将会从数组里面复制值到set
中。set.add(value)
—— 添加一个值,返回 set 本身set.delete(value)
—— 删除值,如果value
在这个方法调用的时候存在则返回true
,否则返回false
。set.has(value)
—— 如果value
在 set 中,返回true
,否则返回false
。set.clear()
—— 清空 set。set.size
—— 返回元素个数。set.forEach
((value, valueAgain, set)=>{}
对象转换
实现map,filter等功能。
1 | let prices = { |
Json
JSON.stringify(value[, replacer,space])
1 | let meetup = { |
replace:替换指定key对应的value(value为undefined的不显示在序列化结果中)。
JSON.parse(str, [reviver])
1 | let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}'; |