JS 字符串、数值、数组、对象、函数 方法拓展

JS 字符串、数值、数组、对象、函数 方法拓展

1. 字符串方法拓展
方法名作用实例
includes(str, index)判断字符串中是否存在指定字符
str - 指定字符
index - 字符串开始位置
“test”.includes(“t”) // true
“test”.includes(“a”) // false
“test”.includes(“s”, 2) // false
startsWith(str, index)判断字符串是否以指定字符开始
str - 指定字符
index - 字符串开始位置
“test”.startsWith(“t”) // true
“test”.startsWith(“e”) // false
“test”.startsWith(“e”, 1) // true
endsWith(str, index)判断字符串是否以指定字符结尾
str - 指定字符
index - 字符串结束位置(不包含)
“test”.endsWith(“t”) // true
“test”.endsWith(“e”) // false
“test”.endsWith(“e”, 2) // true
repeat(n)将指定字符串重复 n 次
n - 重复次数,不传默认为 0 次
“test”.repeat() // “”
“test”.repeat(2) // “testtest”
padStart(n, str)
padLeft(n, str)
在字符串开始位置/左侧用指定字符补全
n - 补全到多少位为止,若 n 小于字符串原本长度,则不会做处理
str - 用于补全的字符,默认空格,若此字符长度不为 1 ,则 n 会按 str 的长度计算个数
“test”.padStart(10, “a”) // “aaaaaatest”
“test”.padLeft(11, “abc”) // “abcabcatest”

日期补全:
String(new Date().getMonth() + 1).padStart(2, 0).padEnd(3, “月”) // 03月
“01-12”.padStart(10, “YYYY-MM-DD”) // YYYY-01-12
padEnd(n, str)
padRight(n, str)
在字符串结束位置/右侧用指定字符补全
n - 补全到多少位为止,若 n 小于字符串原本长度,则不会做处理
str - 用于补全的字符,默认空格,若此字符长度不为 1 ,则 n 会按 str 的长度计算个数
“test”.padEnd(11, “a”) // “testaaaaaaa”
“test”.padEnd(11, “abc”) // “testabcabca”
2. 数值方法拓展
方法名作用实例
数值类型进制写法将指定10进制数值转换console.log(100) // 十进制 100
console.log(0x100) // 十六进制 100 --> 256
console.log(0b100) // 二进制 100 --> 4
console.log(0o100) // 八进制 100 --> 64
isFinite(n)判断 n 是否是有效数值,会进行 Number 类型转换
n - 要判断的值
isFinite(99) // true
isFinite(99/0) // false
isFinite(Infinity) // false
isFinite(“100”) // true
Number.isFinite(n)判断 n 是否是有效数值,不会进行 Number 类型转换,只要不是 Number 类型一律返回 false
n - 要判断的值
Number.isFinite(99) // true
Number.isFinite(99/0) // false
Number.isFinite(Infinity) // false
Number.isFinite(“100”) // false
isNaN(n)判断 n 是否是 NaN (Not a number),会进行 Number 类型转换
n - 要判断的值
isNaN(99) // false
isNaN(NaN) // true
isNaN(“test”) // true
isNaN(“100”) // false
Number.isNaN(n)判断 n 是否是 NaN (Not a number),不会进行 Number 类型转换,只有 n = NaN 时才会返回 true
n - 要判断的值
Number.isNaN(99) // false
Number.isNaN(NaN) // true
Number.isNaN(“test”) // false
Number.isNaN(“100”) // false
Number.isInteger(n)判断 n 是否是整数,不会进行 Number 类型转换
n - 要判断的值
Number.isInteger(99) // true
Number.isInteger(99.0) // true
Number.isInteger(99.1) // false
Number.isInteger(“99”) // false
Number.EPSILON它表示 1 与 大于 1 的最小浮点数之间的差
2.220446049250313e-16

JS中小数与小数之间的算法会存在 精度丢失 问题,例如:0.1+0.2 == 0.3 // false
Math.trunc(n)抹掉 n 的小数部分返回一个整数,单纯抹小数,不做其他操作
n - 要处理的值
Math.trunc(1.2) // 1
Math.trunc(1.8) // 1
Math.trunc(-1.2) // -1
Math.trunc(-1.8) // -1
Math.floor(n)向下取整,处理后的值比原值小
n - 要处理的值
Math.floor(1.95) // 1
Math.floor(1.05) // 1
Math.floor(1) // 1
Math.floor(-1.95) // -2
Math.ceil(n)向上取整,处理后的值比原值大
n - 要处理的值
Math.ceil(1.95) // 2
Math.ceil(1.05) // 2
Math.ceil(1) // 1
Math.ceil(-1.95) // -1
Math.sign(n)判断 n 的正负性,会进行 Number 类型转换
n - 要判断的值
Math.sign(-10) // -1
Math.sign(10) // 1
Math.sign(0) // +0
Math.sign(-0) // -0
Math.sign(“test”) // NaN
3. 数组方法拓展
方法名作用实例
Array.from(params)将类似于数组但不是数组的数据 params 转化为数组
params - 类似于数组但不是数组,例如 JS 获取到的 DOMList
function test() {
console.log(arguments[0]) // 1
console.log(arguments.map) // undefined
console.log(Array.from(arguments).map) // function map() {…}
}
test(1,2,3,4)
Array.of(n1,n2,…,n)声明一个数组,包含 n1, n2, …, n 个元素let arr = [1,2,3] // [1,2,3]
let arr = Array(1,2,3) // [1,2,3]
let arr = Array.of(1,2,3) // [1,2,3]
let arr = Array(3) // [ , , ]
let arr = Array.of(3) // [3]
fill(str, startIndex, endIndex)填充数组、替换数组中的某一项
str - 填充的内容
startIndex - 开始填充的位置
endIndex - 结束填充的位置(不包含)
[,].fill(“test”) // [“test”, “test”]
[“a”,“b”,“c”].fill(“test”, 1, 2) // [“a”, “test”, “c”]
flat()数组扁平化处理,处理多维数组时用到,不会影响原数组[1, 2, 3, [4, 5, 6]].flat() // [1, 2, 3, 4, 5, 6]
flatMap(fun)数组扁平化处理,处理多维复杂数组时用到,不会影响原数组,类似于 map 方法
fun - 回调函数,返回需要扁平化处理的属性
let arr = [
{
name: “a”,
list: [1,2,3]
},
{
name: “b”,
list: [4,5,6]
},
]
arr.flatMap((n) => {
return n.list
})
// [1, 2, 3, 4, 5, 6]
4. 对象方法拓展
方法名作用实例
属性字面量增强写法-传统写法:
let name = “test”
let obj = {
name: name,
fun1: function(){ … }
}

增强写法:
let name = “test”
let obj = {
name, // name: name
fun1(){ … }
}
属性名为变量-let a = “name”
let obj = {
[a]: “test” // name: test
}
Object.assign(obj1, obj2, …, objn)合并对象
第一个 obj 会被当做目标对象,其他的为被合并对象,因此此方法会改变 obj1 的值
let obj1 = {
name: “test1”
}
let obj2 = {
age: 20
}
let obj3 = {
name: “obj3的name”
}
Object.assign(obj1, obj2, obj3)
console.log("obj1: ", obj1)
// obj1: {name: “obj3的name”, age: 20}
Object.is(val1, val2)判断两个值是否相等,只接受 2 个参数NaN == NaN // false
NaN === NaN // false
Object.is(6, 6) // true
Object.is(6, “6”) // false
Object.is({}, {}) // false
Object.is(NaN, NaN) // true
Object.is(+0, -0) // false
+0 === -0 // true
5. 函数方法拓展
方法名作用实例
参数默认值-test(a, b = 1, c = 2) {}
剩余参数-test(…args) {
console.log(args) // [1,2,3]
}
test(1,2,3)
箭头函数-https://blog.csdn.net/CxZzzE/article/details/125563499

笔记来源: https://www.bilibili.com/video/BV1w8411s7g3/?p=11&spm_id_from=pageDriver&vd_source=8469bc86f044a56d2c8c7be5d1770d9a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值