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"}'; |