-
遍歷 forEach
let Arr = [12, 'config', '19', 'WE', 16, -7]
Arr.forEach((value, index, arr) => {
value, index, arr
// 遍歷的元素煞躬,下標(biāo)尚洽,原數(shù)組
})
-
過(guò)濾 filter
// newArr:新數(shù)組,val:遍歷的元素,返回true則加入到新數(shù)組
let newArr=Arr.filter((val) => {
return val < 17
})
console.log(newArr)
-
映射 map
// newAcc :新數(shù)組,val:遍歷的元素,計(jì)算后返回到新數(shù)組
let Acc = [132, 321, 34, 366, 298]
let newAcc = Acc.map((val) => {
return val + 100
})
console.log(newAcc)
-
匯總reduce
// new2Arr:新數(shù)組,val:遍歷的元素, perVal上一次的返回值档痪,0:perVal的初始值
let new2Acc = Acc.reduce((perVal, val) => {
return perVal + val
}, 0)
console.log(new2Acc)
-
構(gòu)造函數(shù)
class Uver{
constructor(name,age){
this.name = name
this.age = age
}
shoSy(){
console.log(this.name);
}
shoSt(){
console.log(this.age)
}
}
var u2 = new Uver('pengjj','28')
u2.shoSy();
u2.shoSt();
-
數(shù)組方法
// 返回一個(gè)布爾值,表示某個(gè)數(shù)組是否包含給定的值邢滑,第二個(gè)參數(shù)表示搜索的起始位置腐螟,負(fù)數(shù)則表示倒數(shù)的位置
[1, 2, 3].includes(4); // false
[1, 2, NaN].includes(NaN); // true
[1, 2, 3].includes(3, -1); // true
// 覆蓋,將3號(hào)位復(fù)制到0號(hào)位
[1, 2, 3, 4, 5].copyWithin(0, 3, 4)
// [4, 2, 3, 4, 5]
// 將2號(hào)位到數(shù)組結(jié)束困后,復(fù)制到0號(hào)位
var i32a = new Int32Array([1, 2, 3, 4, 5]);
i32a.copyWithin(0, 2);
// Int32Array [3, 4, 5, 4, 5]
// 對(duì)象轉(zhuǎn)數(shù)組
let arrayLike = {
'0': 'a',
'1': 'b',
'2': 'c',
length: 3
};
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
-
字符串方法
// endswith 尾部驗(yàn)證 startswith 頭部驗(yàn)證乐纸,includes是否擁有,第二個(gè)參數(shù)摇予,表示開(kāi)始搜索的位置汽绢,返回布爾值
let str = 'helloword'
let arr1 = str.endsWith('word')
let arr2 = str.startsWith('l')
let arr3 = str.includes('l',4)
console.log(arr2, arr1, arr3 )
// 字符串遍歷
for (let codePoint of 'foo') {
console.log(codePoint)
}
// "f"
// "o"
// "o"
// 返回字符串給定位置的字符
'abc'.charAt(0) // "a"
// 頭部和尾部補(bǔ)全侧戴,第一個(gè)參數(shù)用來(lái)指定字符串的最小長(zhǎng)度庶喜,第二個(gè)參數(shù)是用來(lái)補(bǔ)全的字符串的值。
'xxx'.padStart(2, 'ab') // 'xxx'
'xxx'.padEnd(2, 'ab') // 'xxx'
'1'.padStart(10, '0') // "0000000001"
-
展開(kāi)運(yùn)算救鲤、函數(shù)運(yùn)算
// 展開(kāi)運(yùn)算
let acc =[1,2,3]
console.log(...acc);
// 函數(shù)運(yùn)算
let svr = s => s + 20
console.log(svr(3)) // 23
-
解構(gòu)賦值
// 解構(gòu)賦值
let [a, b, c] = [12, 22, 23];
console.log(a, b, c)
// 把對(duì)象里面的值單獨(dú)拿出來(lái)
let qwer = { foo, bar } = { foo: 'aaa', bar: 'bbb' };
console.log(qwer ,foo, bar);
// 剩余
let [ac, ...bc] = [1, 2, 3];
console.log( ac);
console.log( bc);
-
Promise
1、主要解決回調(diào)地獄等一些復(fù)雜的異步操作秩冈,且鏈?zhǔn)骄幊趟鶐?lái)的狀態(tài)和維護(hù)都會(huì)比嵌套更好
2本缠、resolve, reject通過(guò)Promise的參數(shù)傳入,其本身也是函數(shù)
3入问、resolve()成功回調(diào)到then()丹锹,reject()失敗回調(diào)到catch()稀颁,也可以再then里面?zhèn)鲀蓚€(gè)函數(shù),第一個(gè)為成功回調(diào)第二個(gè)為失敗回調(diào)楣黍,不需要使用catch(), 也可以直接用throw ‘err’來(lái)拋出異常
4匾灶、將異步請(qǐng)求的代碼和處理代碼使用.then來(lái)分隔
// setTimeout函數(shù)作為Ajax請(qǐng)求,上一個(gè)回調(diào)執(zhí)行完成所有的業(yè)務(wù)代碼之后再執(zhí)行下一個(gè)Ajax回調(diào)
PromiseClick () {
new Promise((resolve, reject) => {
// 第一次網(wǎng)絡(luò)請(qǐng)求
setTimeout(() => {
resolve()
}, 2000)
}).then(() => {
// 第一次網(wǎng)絡(luò)請(qǐng)求后處理代碼
console.log('is work');
console.log('is work');
console.log('is work');
console.log('is work');
return new Promise((resolve, reject) => {
// 第二次網(wǎng)絡(luò)請(qǐng)求
setTimeout(() => {
resolve()
}, 2000)
})
}).then(() => {
// 第二次網(wǎng)絡(luò)請(qǐng)求后處理代碼
console.log('is work2');
console.log('is work2');
console.log('is work2');
console.log('is work2');
return new Promise((resolve, reject) => {
// 第三次網(wǎng)絡(luò)請(qǐng)求
setTimeout(() => {
reject('回調(diào)失敗') // 回調(diào)失敗時(shí)執(zhí)行reject
}, 2000)
})
}).then(() => {
// 第三次網(wǎng)絡(luò)請(qǐng)求后處理代碼
console.log('is work3');
console.log('is work3');
console.log('is work3');
console.log('is work3');
}).catch((err) => { // 可以傳參數(shù)到處理代碼
// 也可以再.then里面?zhèn)鲀蓚€(gè)函數(shù),第一個(gè)為成功回調(diào)第二個(gè)為失敗回調(diào)租漂,不需要使用catch().
console.log(err);
})
},
Promise里面的all方法阶女,主要解決多個(gè)異步必須要全部完成才能往下執(zhí)行的情況,results會(huì)作為一個(gè)數(shù)組在.then的參數(shù)里哩治,依次拿到每個(gè)異步的數(shù)據(jù)
allPromiseClick () {
Promise.all([
new Promise((resolve, reject) => {
setTimeout(() => {
console.log('1')
resolve('1')
}, 2000)
}),
new Promise((resolve, reject) => {
setTimeout(() => {
console.log('2')
resolve('2')
}, 1000)
})
]).then((results) => {
console.log(results)
})
},