固然也能夠看個人 github 的 issues 歡迎 star!css
其實,如今已經總結的夠多了,你們能夠看看:html
可是看過了仍是很容易就忘了,仍是得本身敲一遍好。就總結一些本身有問題的地方吧前端
本身遇到以及整理的一些點:react
const a = {
count:1,
b:{
count: 2,
getCount: function(){
console.log(this.count);
}
}
}
const getb = a.b.getCount
console.log(getb())
console.log(a.b.getCount()) // 這裏要注意不要被迷惑了
複製代碼
理解的話,首先要明確的是 this 是在函數裏面,在函數調用時動態指定的,指向當前函數(方法)的執行棧(上下文)。 能夠查看 理解 JavaScript 中函數調用和 thiswebpack
一個字符串只由[](){}
這幾種構成,要求寫一個函數 isMatch(str)
匹配以下格式 (1)({[())]}
(2)([{({[]})})]
,結果返回 booleangit
分析:要求有兩個github
[{(
分別都是在 }])
的前面 後來的代碼實現:function updateStr(str, reg) {
let isLoop = true;
let result = str;
while (isLoop) {
result = result.replace(reg, (val, str1, str2) => {
val = val.substring(1, val.length - 1);
return val;
});
if (!reg.test(result)) {
isLoop = false;
}
}
return result;
};
function isMatch(str) {
const reg1 = /(\()[\{\}\(\[\]]*(\))/; // 每次匹配一個 (),而後去除
const reg2 = /(\{)[\(\)\{\[\]]*(\})/;// 每次匹配一個 {},而後去除
const reg3 = /(\[)[\[\(\)\{\}]*(\])/;// 每次匹配一個 [],而後去除
const REGS = [reg1, reg2, reg3];
const result = REGS.reduce((total, reg, index) => {
return updateStr(total, reg);
}, str);
return !result;
}
// 測試
let strArray = ['}([(())]){', '{[{([(())])})', '{{[[{([(())])}))'];
let result = strArray.map(val => {
return isMatch(val);
});
console.log(result);
<!--固然在 LeetCode 上也有相似的題目,經過棧的特性來解決的-->
// https://leetcode.com/problems/valid-parentheses/submissions/1
function isMatch(str) {
let map = {
'(': -1,
')': 1,
'[': -2,
']': 2,
'{': -3,
'}': 3
};
let stack = [];
for (let i =0; i < str.length; i++){
if(map[str[i]] < 0){
stack.push(str[i]);
}else{
let last = stack.pop();
if(map[last] + map[str[i]] !==0) return false;
}
}
return stack.length <= 0;
}
複製代碼
要求以下web
LazyMan('Tony');
// Hi I am Tony
LazyMan('Tony').sleep(10).eat('lunch');
// Hi I am Tony
// 等待了10秒...
// I am eating lunch
LazyMan('Tony').eat('lunch').sleep(10).eat('dinner');
// Hi I am Tony
// I am eating lunch
// 等待了10秒...
// I am eating diner
LazyMan('Tony').eat('lunch').eat('dinner').sleepFirst(5).sleep(10).eat('junk food');
// Hi I am Tony
// 等待了5秒...
// I am eating lunch
// I am eating dinner
// 等待了10秒...
// I am eating junk food
複製代碼
關鍵點:面試
shift()
調用一個答案算法
要求:
const previous = [{
name: "1",
id: 1,
pid: 0
},
{
name: "2",
id: 2,
pid: 1
},
{
name: "3",
id: 3,
pid: 2
}]
const result = [{
name: "1",
id: 1,
pid: 0,
children:[{
name: "2",
id: 2,
pid: 1
}]
},{
name: "3",
id: 3,
pid: 2
}
]
複製代碼
要點:
其實就是樹的不一樣表現形式
代碼實現能夠看這裏 codesandbox.io/s/nw5xlozk6…
2個正整數字符串的相加,即 '1'+'19' --> '20',注意考慮超長字符串相加
思路:
Number.MAX_VALUE
關鍵: ETag、CacheControl、Expires 參考 HTTP緩存控制小結
參考
同時,就已經減輕了每臺服務器的壓力,服務器越多,每一個服務器壓力就越小
查看個人博客
平時學習就要多假設一下,爲何會這樣,若是換成那個(那裏)又會怎麼樣,這二者比較起來有什麼不一樣!總之要多總結回顧,你會有不同的感覺