數(shù)組擴展
- Array.from() 將類數(shù)組對象和可遍歷對象轉(zhuǎn)換成數(shù)組
Array.from('hello') // ['h', 'e', 'l', 'l', 'o']
- Array.of() 將一組值轉(zhuǎn)換為數(shù)組
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() 表示某個數(shù)組是否包含給定的值渊抄,可以找到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] 默認只能拉平一層栖雾,可加入?yún)?shù)指定層數(shù)
[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() 返回布爾值,表示是否找到了參數(shù)字符串甚负。
startsWith() 返回布爾值柬焕,表示參數(shù)字符串是否在原字符串的頭部审残。
endsWith() 返回布爾值,表示參數(shù)字符串是否在原字符串的尾部斑举。
repeat(n) 重復
padStart(n,str) 頭部補全
padEnd(n,str) 尾部補全
數(shù)值擴展
Number.isFinite(), Number.isNaN()
Number.parseInt(), Number.parseFloat()
Number.isInteger() 是否是整數(shù)
Math.trunc() 去除一個數(shù)的小數(shù)部分搅轿,返回整數(shù)部分。
Math.sign() 為正數(shù)富玷,返回+1璧坟;為負數(shù),返回-1赎懦;為 0雀鹃,返回0;為-0励两,返回-0;其他值黎茎,返回NaN。