在做關鍵詞搜索功能的時候,需要對后臺給出的數據進行處理,用到了filter過濾器來篩選對象中的數據。首先在本地準備兩個變量,一個用來存儲后臺數據,一個用來過濾篩選。如圖:
關鍵詞搜索的過程便是對userList進行篩選的過程。注意每次過濾之前都需要令userList=userAllList,防止越篩越少。
但是執行的時候,卻發現第二次搜索無法正常實現。將userList和userAllList都打印了一下,發現每次搜索,兩個變量都在被過濾篩選。
這里就需要引出深拷貝和淺拷貝的概念。深拷貝和淺拷貝都只針對于引用數據類型,淺拷貝只復制指向某個對象的指針,而不復制對象本身,新舊對象還是共享同一塊內存;深拷貝會另外創造一個一模一樣的對象,新對象跟原對象不共享內存,修改新對象不會改到原對象。
顯然,我們這里將userAllList賦值給userList的過程只是進行了一次淺拷貝,兩個對象仍指向同一塊內存,一個被修改了另一個也會跟著修改。
要實現深拷貝,最簡單的方法就是利用JSON.stringify()與JSON.parse(),通過JSON.stringify把對象轉成字符串,再用JSON.parse把字符串轉成一個全的新的對象。有關JSON的內容可以點擊此鏈接>>查看。
這樣修改之后便可以成功實現搜索功能。