一說到數據結構,不少人就開始頭大了,由於總感受像什麼數據結構,算法之類的概念都很高大上,我知道有不少的同窗都是畢業後以爲編程高薪,亦或培訓速成因此就選擇了一門語言,從而從事了這個行業,可是對於編程語言的一些基礎,以及相關的系列知識結構實際上是缺失的,因此業餘時間多花點功夫多學習,其實都是能夠補上來的,拿我本身舉例子吧,我學的專業雖然不是「計算機科學與技術」也不是「軟件工程」這樣純計算機的專業,可是是和計算機專業相關的學科,因此上學的時候,接觸過C,Java,C#等語言,也有一些數據結構的概念,數據庫操做也略知一二,也系列的學過計算機網絡基礎等課程,雖然上學的時候學的很差也不精,但至少的思想和概念是有的,因此在此也給一些剛剛入技術,或者轉行的同窗一點提示,除了本職的技術語言和繁忙的業務邏輯以外,這些基礎概念仍是應該要補上來的。javascript
數據結構是一種存儲和組織數據的方式java
至於我是何時有了關於「數據結構」這個概念,應該是2016的7月份起,加入了目前的公司,接觸複雜的業務邏輯,處理複雜的數據,公司有專門的幾十人團隊的大數據部門,因此可想而知,每次處理接口返回過來的數據,再也不是之前單一結構的數據,而是相對比較複雜,設計合理的接口數據,那麼這個時候你直接拿到數據,並非能夠直接使用的,它須要你作二次處理以後才能用了展現或者處理邏輯用的數據程序員
舉個栗子es6
好比咱們獲取到了一段這樣的數據,可是臨時咱們須要往數據中再加一個字段,好比須要給每一項加一個「country"這個字段,所以咱們就須要將這組數據進行一個處理,數組是最簡單的內存數據結構,js中以及幾乎全部的語言都支持數組類型,因此學好js中的數據結構,首先要學習的就是對數組的處理算法
javascript語言一直不斷的完善和更新,去年有了es6,今年又有了es7,數組中涉及的方法和API也是在不斷的完善,本文不介紹es5以後的方法擴展,須要的同窗請查看相關的資料學習,先來概覽一下經常使用的能夠高效處理數組的方法,這些方法能夠在平常工做中幫咱們處理不少簡單的邏輯數據庫
處理數據時經常使用的:具備遍歷做用的方法編程
forEach(),map(), some()/every(), filter(),reduce()/reduceRight()方法都具備一個遍歷做用,可是它們在遍歷的同時還具備其特定的功能,以上這幾個方法是我在處理數組數據時經常使用的方法,以前沒有使用過或者使用不全的同窗能夠去搜索一下它們各自的功能數組
思考?如何去除數組中重複的項網絡
例如數組:[1,3,4,3,5]咱們在作去重的時候,一開始想到的確定是,逐個比較,外面一層循環,內層後一個與前一個一比較,若是是久不將當前這一項放進新的數組,挨個比較完以後返回一個新的去太重複的數組數據結構
這時候不由一想固然有了!!!hashtable 啊,經過對象的hash辦法能夠有效的去除掉重複的內容
例如數組是這樣的:
完結
以上的小栗子,由最開始咱們的古老思想和低效方法逐步到最後數組去重複雜項,這一個個過程都體現了數組的樂趣所在,同時也體現出了數據結構的魅力之處,數組只是一種簡單的數據結構,還有不少更復雜更有意識的知識等待咱們去挖掘,也但願小夥伴能夠跟我分享更多的知識和樂趣,2107年歡迎你和我一塊兒作一個不斷努力學習的知識分子
Cayley 一個不斷努力學習的女程序員