1.描述一下React 生命週期?
渲染過程調用到的生命週期函數,主要幾個要知道;
* constructor
* getInitialState
* getDefaultProps
* componentWillMount
* render
* componentDidMount
更新過程
* componentWillReceiveProps
* shouldComponentUpdate
* componentWillUpdate
* render
* componentDidUpdate
卸載過程
componentWillUnmount
複製代碼
2.實現組件有哪些方式?
React.createClass 使用API來定義組件
React ES6 class component 用 ES6 的class 來定義組件
Functional stateless component 經過函數定義無狀態組件
複製代碼
3.shouldComponentUpdate函數有什麼做用?
shouldComponentUpdate是一個容許咱們自行決定某些組件(以及他們的子組件)是否進行更新的生命週期函數,
reconciliation的最終目的是儘量以最有效的方式去根據新的state更新UI,
若是你已經知道UI的哪些狀態無需進行改變,就不必去讓React去判斷它是否該改變。
讓shouldComponentUpdate返回falss, React就會讓當前的組件和其子組件保持不變。
複製代碼
4.手寫數組快速排序
快速排序」的思想很簡單,整個排序過程只須要三步:
(1)在數據集之中,選擇一個元素做爲」基準」(pivot)。
(2)全部小於」基準」的元素,都移到」基準」的左邊;全部大於」基準」的元素,都移到」基準」的右邊。
(3)對」基準」左邊和右邊的兩個子集,不斷重複第一步和第二步,直到全部子集只剩下一個元素爲止。
代碼:
var quickSort = function(arr) {
 if (arr.length <= 1) { return arr; }
 var pivotIndex = Math.floor(arr.length / 2);
 var pivot = arr.splice(pivotIndex, 1)[0];
 var left = [];
 var right = [];
 for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
};
複製代碼
5.判斷一個字符串中出現次數最多的字符,並統計次數?
var str = 'shdshdfjkfjfdgjkjdksgjskdjfsfsfsfjksjkfdkjf'
var arr = str.split('').sort()//把字符串變爲數組,在排序
str = arr.join('') //把排序好的數組,變爲字符串
var count = 0 //不能使用undefined,轉化爲數字是NaN
var char = 0
var reg = /(\w)\1+/g
str.replace(reg,function(parent,son){
if(parent.length >count){
count = parent.length
char = son
}
})
console.log("最多的字符爲:"+char+";個數爲:"+count)
拓展:replace方法:
replace語法:
replace(reg,function(parent,son1,son2,index){
第一個參數:匹配成功的子字符串(parent)
第二個參數:第一個分組內容;(son)
第三個參數:第二個分組內容;(son2)
...
最後一個爲開始的下標
})
<script type="text/javascript">
var data = '2019-1-8'
var reg = /(\d*)-/g
var data = data.replace(reg,function(parent,son1,index){ //此時沒有son2
console.log(parent) //2019- , 1-
console.log(son1) //2019 , 1
console.log(index) //0 5 開始匹配的下標
return son1+'.'
})
console.log(data) //2016.6.8
</script>
使用replace()基本方法
var data = '2019-1-8'
var reg = /-/g
var data = data.replace(reg,'.')
console.log(data) //2019.1.
複製代碼