数组扩展
- Array.from() 将类数组对象和可遍历对象转换成数组
Array.from('hello') // ['h', 'e', 'l', 'l', 'o']
- Array.of() 将一组值转换为数组
Array.of(3, 2, 1) // [3,2,1]
Array.from([1, 2, 3], x => x * x) // [1, 4, 9]
Array.from([1, , 2, , 3], n => n || 0) // [1, 0, 2, 0, 3]
Array.from({ length: 2 }, () => 'jack') // ['jack', 'jack']
-
copyWithin(target, start = 0, end = this.length) 复制成员
-
find(),findIndex() 查找值,查找索引
[1, 4, -5, 10].find((n) => n < 0) // -5
[1, 5, 10, 15].find(function(value, index, arr) {
return value > 9;
}) // 10
[1, 5, 10, 15].findIndex(function(value, index, arr) {
return value > 9;
}) // 2
[NaN].findIndex(y => Object.is(NaN, y))// 0 和indexOf不同,可以找到NaN
- fill() 填充 (注意是浅拷贝)
new Array(3).fill(7) // [7, 7, 7]
['a', 'b', 'c'].fill(7, 1, 2) // ['a', 7, 'c']
- entries(),keys()和values()
for (let index of ['a', 'b'].keys()) {
console.log(index);
}
// 0
// 1
for (let elem of ['a', 'b'].values()) {
console.log(elem);
}
// 'a'
// 'b'
for (let [index, elem] of ['a', 'b'].entries()) {
console.log(index, elem);
}
// 0 "a"
// 1 "b"
- includes() 表示某个数组是否包含给定的值,可以找到NaN,可代替indexOf
[1, 2, NaN].includes(NaN) // true
[1, 2, 3].includes(3, 3); // false
- flat(),flatMap() 拉平
[1, 2, [3, 4]].flat() // [1, 2, 3, 4]
[1, [2, [3]]].flat(Infinity) // [1, 2, 3] 默认只能拉平一层,可加入参数指定层数
[1, 2, , 4, 5].flat() // [1, 2, 4, 5] 会跳过空位
[2, 3, 4].flatMap((x) => [x, x * 2]) // [2, 4, 3, 6, 4, 8]
[1, 2, 3, 4].flatMap(x => [[x * 2]]) // [[2], [4], [6], [8]]
- 扩展运算符
对象扩展
-
Object.is()
-
Object.assign(target, source1, source2); 很常用,用的比较熟了就不介绍了(注意是一层深拷贝)
-
Object.keys(),Object.values(),Object.entries()
let {keys, values, entries} = Object;
let obj = { a: 1, b: 2, c: 3 };
for (let key of keys(obj)) {
console.log(key); // 'a', 'b', 'c'
}
for (let value of values(obj)) {
console.log(value); // 1, 2, 3
}
for (let [key, value] of entries(obj)) {
console.log([key, value]); // ['a', 1], ['b', 2], ['c', 3]
}
const obj = { 100: 'a', 2: 'b', 7: 'c' };
Object.values(obj)
// ["b", "c", "a"]
const obj = { foo: 'bar', baz: 42 };
Object.entries(obj)
// [ ["foo", "bar"], ["baz", 42] ]
Object.fromEntries([
['foo', 'bar'],
['baz', 42]
])
// { foo: "bar", baz: 42 }
-
扩展运算符
-
其他
Object.getOwnPropertyDescriptors()方法,返回指定对象所有自身属性(非继承属性)的描述对象
Object.getOwnPropertyDescriptor()方法会返回某个对象属性的描述对象
Object.setPrototypeOf() 原型对象写操作
Object.getPrototypeOf() 原型对象读操作
Object.create() 原型对象生成操作
字符串扩展
includes() 返回布尔值,表示是否找到了参数字符串。
startsWith() 返回布尔值,表示参数字符串是否在原字符串的头部。
endsWith() 返回布尔值,表示参数字符串是否在原字符串的尾部。
repeat(n) 重复
padStart(n,str) 头部补全
padEnd(n,str) 尾部补全
数值扩展
Number.isFinite(), Number.isNaN()
Number.parseInt(), Number.parseFloat()
Number.isInteger() 是否是整数
Math.trunc() 去除一个数的小数部分,返回整数部分。
Math.sign() 为正数,返回+1;为负数,返回-1;为 0,返回0;为-0,返回-0;其他值,返回NaN。
网友评论