一、前言
看到標題薪寓,也許會說前端扯什么數(shù)據(jù)結構,寫出頁面完成交互不就ok了嗎澜共?實際上編程語言也有自己的數(shù)據(jù)結構向叉,只是我們平時并沒有過多的去關注。以下我們將來淺談以下javascript中的數(shù)據(jù)結構--數(shù)組
二嗦董、為什么要學習數(shù)據(jù)結構
以我最近接觸的幾個項目來說母谎,后端返回的數(shù)據(jù)稍有些復雜,需要做一些處理才能得到自己需要渲染的數(shù)據(jù)結構京革。作為前端開發(fā)人員奇唤,尤其在現(xiàn)在,必須有強大的數(shù)據(jù)結構算法能力匹摇,才能支撐整個業(yè)務的開發(fā)咬扇。
三、javascript數(shù)據(jù)類型
在說明數(shù)據(jù)結構之前廊勃,我們了解以下javascript都有哪些數(shù)據(jù)結構
原始類型:
Boolean懈贺、Null、Undefined供搀、Number隅居、String钠至、Symbol
Object類型
除 Object 以外的所有類型都是不可變的(值本身無法被改變)葛虐。例如,與 C 語言不同棉钧,JavaScript 中字符串是不可變的(譯注:如屿脐,JavaScript 中對字符串的操作一定返回了一個新字符串,原始字符串并沒有被改變)。我們稱這些類型的值為“原始值”
四的诵、數(shù)組
1.定義
數(shù)組是我們最常用也最熟悉的數(shù)據(jù)結構万栅,它是如何定義的:一個儲存元素的線性集合,元素可以通過索引開任意存取西疤,索引通常是數(shù)字烦粒,用來計算元素之間的存儲位置的偏移量。
emmmmmm.......
這樣說好像和嗯晦澀難懂代赁,簡單說就是:使用單獨的變量名來存儲一系列的值
2.創(chuàng)造與讀寫
var number = []
var arr = [1, 2, 3]
var people = new Array()
var count = new Array(1, 2, 3)
var a = new Array(2)
var b = [1, null, 'apple'] //當然扰她,數(shù)組里面的值不一定都是一樣的
// length是數(shù)組長度,我們可以借助它來進行讀
for (var i = 0; i < arr.length; i++) {
console.log(arr[i])
}
3.常用基本方法
方法 | 描述 | 事例 |
---|---|---|
concat() | 連接兩個或更多的數(shù)組芭碍,并返回結果 | arr1.caoncat(arr2) |
join() | 把數(shù)組的所有元素放入一個字符串徒役。元素通過指定的分隔符進行分隔。 | arr.join(';') |
pop() | 刪除并返回數(shù)組的最后一個元素 | arr1.pop() |
push() | 向數(shù)組的末尾添加一個或更多元素窖壕,并返回新的長度 | arr.push(1) |
shift() | 刪除并返回數(shù)組的第一個元素 | arr1.shift() |
unshift() | 向數(shù)組的開頭添加一個或更多元素忧勿,并返回新的長度。 | arr.unshift(1) |
reverse() | 顛倒數(shù)組中元素的順序瞻讽。 | arr1.reverse() |
slice() | 從某個已有的數(shù)組返回選定的元素 | arr.slice(1, 2) |
sort() | 對數(shù)組的元素進行排序 | arr1.sort() |
splice() | 刪除元素鸳吸,并向數(shù)組添加新元素。 | arr.splice(1, 2) |
toString() | 連接兩個或更多的數(shù)組速勇,并返回結果 | arr1.toString() |
valueOf() | 返回數(shù)組對象的原始值 | arr.valueOf() |
indexOf() | 返回查找數(shù)組的位置层释,找不到-1 | arr.indexOf(1) |
4.迭代器方法
不產(chǎn)生新數(shù)組:
// forEach
function square(num) {
console.log(num)
}
var nums = [1, 2, 3, 4, 5]
nums.square(square)
//
產(chǎn)生新數(shù)組:
map(),filter()
function square(num) {
console.log(num)
}
var nums = [1, 2, 3, 4, 5]
nums.map(square)
array.filter(function(currentValue,index,arr), thisValue)
5.經(jīng)典方法與例子
以上都是一些理論上的知識,比較簡單易懂快集。但是實際上運用到業(yè)務中贡羔,就需要綜合起來了。比如說數(shù)組去重个初、排序乖寒、甚至一些常見的面試題。無論怎么變化院溺,我們只需要關注核心思路楣嘁,怎么知道他們想等,怎么找到對應的索引珍逸,怎么刪掉對應的值逐虚。
小結
此篇算只能算得上一個小筆記吧,雖然可能看起來比較簡單谆膳,但是數(shù)組在我們日常開發(fā)中用的最多叭爱。所以了解好數(shù)組的一些基本操作,以及一些高級用法漱病,將會給我們開發(fā)帶來事半功倍的效果买雾。