數(shù)組

數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)顧名思義 就是數(shù)據(jù)的結(jié)構(gòu)(邏輯結(jié)構(gòu) 存儲結(jié)構(gòu) 算法)

存儲結(jié)構(gòu)(數(shù)據(jù)存儲方式)

線性結(jié)構(gòu):

數(shù)組(順序表)

隊列

鏈表

非線性結(jié)構(gòu):

hash(數(shù)列表)

只要是能存數(shù)據(jù)的容器 就必須具備增刪改查的方法

數(shù)組

概述:數(shù)組是固定一類數(shù)據(jù)的組合(一般情況下 數(shù)組里面的數(shù)據(jù)類型一致)(多個數(shù)據(jù))

數(shù)組的聲明(引用數(shù)據(jù)類型)

1界酒、使用 [] 聲明數(shù)組

//里面的數(shù)據(jù)以,進行分隔

var arr=[1,2,3]

2笆呆、使用new 關(guān)鍵詞進行聲明(對象)

var arr=Array(10)//里面參數(shù)指定相應(yīng)的長度 如果你沒有寫 表示長度為0

var arr2=newArray(1,2,3,4)//當前數(shù)組里面的數(shù)據(jù)有1 2 3 4

length屬性來訪問對應(yīng)的長度(也可以進行設(shè)置)

var arr=newArray()

//? 通過length來訪問數(shù)組的長度

console.log(arr.length) //0

arr.length=11//設(shè)置對應(yīng)的長度

console.log(arr);

下標訪問

console.log(arr[0])//獲取第一個

//可以允許字符串

console.log(arr['0']);//獲取第一個

數(shù)組的賦值

arr[0]=10

console.log(arr[0]);//10

//給數(shù)組里面的元素隨機給值

var arr=newArray()

for(var i=0;i<10;i++) {

? ? arr[i]=Math.random()//0~1之間 包含0 不包含1

}

console.log(arr);

數(shù)組遍歷

傳統(tǒng)的for循環(huán)遍歷

var arr=[1,2,3,45,12]

//利用順序表達特點 有序

for(var i=0;i<arr.length;i++){

console.log(arr[i])

}

for in遍歷(只走對象 下標 迭代器 next)

var arr=[1,2,3,45]

for(var index in arr){//index表示為下標

console.log(arr[index])

}

for of進行遍歷(只走數(shù)組 迭代器來實現(xiàn)的)

//使用for of遍歷(只能遍歷數(shù)組)

for(var value of arr){//value表示的是里面的值

console.log(value);

}

數(shù)組的方法

數(shù)組是一個存儲結(jié)構(gòu)(增刪改查的操作)

添加(add push append)

棧方法(先進后出 后進先出)push入棧 pop出棧操作

push方法(將內(nèi)容添加到最后一個)

var arr=[1]

arr.push(10)

console.log(arr)//[1,10]

隊列方法(先進先出 后進后出)

將內(nèi)容追加到最前面

unshift方法(將內(nèi)容添加到第一個)

var arr=[i]

arr.unshift(10)

console.log(arr)//[10,1]

刪除(delete(硬刪)remove(軟刪)...)

棧方法

pop方法(刪除最后面)

var arr=[1,2,3]

arr.pop(0)//通過下標

console.log(arr)//[1槽棍,2]

隊列方法

shift方法(刪除第一個)

var arr=[1,2,3]

arr.shift()

console.log(arr)//[2,3]

修改(replace替換 update更新)

反轉(zhuǎn)reverse(將最后一個變到第一個? 一個個對應(yīng)的換位置)

//改變原來的數(shù)組

var arr=[1,2,3,4,8]

arr1=arr.reverse();//返回一個數(shù)組 這個數(shù)組就是反轉(zhuǎn)后的數(shù)組

arr1.unshift(10)//返回的反轉(zhuǎn)后的數(shù)組其實就是我們原本的數(shù)組

console.log(arr)//反轉(zhuǎn)后的結(jié)果[8,4,3,2,1]

console.log(Object.is(arr1,arr));//true

排序sort

//sort方法排序? //默認情況下它是根據(jù)第一個字符的ACSII碼進行排序(ACSII碼排序)

var arr2=[1,2,8,3,4,5]

arr2.sort()//返回一個數(shù)組 這個數(shù)組是排序好的數(shù)組 他跟上面一樣 就是返回的這個數(shù)組其實就是原本的數(shù)組

console.log(arr2);

// sort 其實就是一個高階函數(shù) 高階函數(shù)就是里面用函數(shù)作為參數(shù)的函數(shù)

var arr3=[15,20,18,11,4]

arr3.sort(function(a,b) {

//1和-1來進行大小區(qū)分和排序規(guī)則

return a-b//a-b是正序 b-a是倒序

})

console.log(arr3);

不影響原本數(shù)組的方法

concat(連接)

//不會影響原本數(shù)組的方法 返回新的數(shù)組

var arr=[1,2,3,4]

var arr1=[1,2,3,4]

var arr2=[1,2,3,4]

var arr3=[1,2,3,4]

//concat 連接 把多個數(shù)組變成一個數(shù)組 返回 ...拓展運算符 打開數(shù)組取出里面的值(...證明可以寫任意個)?表示可寫可不寫

varnewArr=arr.concat(arr1,arr2,arr3)

console.log(newArr);

slice(截壬ν铡)

//slice 切片 把一個數(shù)組里面東西提取出來 返回新的數(shù)組

var sliceArr=arr.slice()//全切

console.log(sliceArr);

var sliceArr1=arr.slice(1)//從1開始切到最后 如果下標不存在 返回一個空數(shù)組

console.log(sliceArr1);

var sliceArr2=arr.slice(2,3)//不包含結(jié)束的下標 但是包含開始的下標

console.log(sliceArr2);

//concat方法slice方法返回的數(shù)組跟原本的數(shù)組不是一個對象 但是里面的值或者對象他的地址是一樣的(淺拷貝)

var obj={

name:"jack"

}

var objArr=[obj]

var objArr1=objArr.concat()

var objArr2=objArr.slice()

console.log(objArr[0].name);//jack

objArr1[0].name='張三'

console.log(objArr2[0].name);//張三

console.log(objArr[0].name);//張三

splice方法(增加)

var arr2=[1,46,74,3,5,5]

arr2.splice(2,0,8)//下標 刪除的個數(shù)? 插入的值

console.log(arr2);//[1,46,8,74,3,5,5]

splice方法(刪除)

//splice會影響之前的數(shù)組 刪除 截取 插入

var arr=[12,18,38]

//參數(shù)有倆個 一個開始位置 一個刪除的個數(shù)(可寫可不寫) ?? 返回一個新的數(shù)組

// var newArr = arr.splice(0)//從第一個開始刪 或者刪除第一個

// console.log(newArr);

console.log(arr)

var newArr=arr.splice(1,2)

console.log(newArr);//獲取刪除的內(nèi)容 其實就是截取里面的內(nèi)容(不足是會改變之前的數(shù)組)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肠牲,一起剝皮案震驚了整個濱河市隧魄,隨后出現(xiàn)的幾起案子凫岖,更是在濱河造成了極大的恐慌门岔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毁习,死亡現(xiàn)場離奇詭異智嚷,居然都是意外死亡零院,警方通過查閱死者的電腦和手機蛛芥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門铅匹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妻怎,“玉大人炫惩,你說我怎么就攤上這事赞弥〉甓粒” “怎么了纫普?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵嫁艇,是天一觀的道長朗伶。 經(jīng)常有香客問我,道長步咪,這世上最難降的妖魔是什么论皆? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮猾漫,結(jié)果婚禮上纯丸,老公的妹妹穿的比我還像新娘。我一直安慰自己静袖,他們只是感情好觉鼻,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著队橙,像睡著了一般坠陈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捐康,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天仇矾,我揣著相機與錄音,去河邊找鬼解总。 笑死贮匕,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的花枫。 我是一名探鬼主播刻盐,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼掏膏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了敦锌?” 一聲冷哼從身側(cè)響起馒疹,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乙墙,沒想到半個月后颖变,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡听想,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年腥刹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汉买。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡肛走,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出录别,到底是詐尸還是另有隱情,我是刑警寧澤邻吞,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布组题,位于F島的核電站,受9級特大地震影響抱冷,放射性物質(zhì)發(fā)生泄漏崔列。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一旺遮、第九天 我趴在偏房一處隱蔽的房頂上張望赵讯。 院中可真熱鬧,春花似錦耿眉、人聲如沸边翼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽组底。三九已至,卻和暖如春筐骇,著一層夾襖步出監(jiān)牢的瞬間债鸡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工铛纬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厌均,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓告唆,卻偏偏與公主長得像棺弊,于是被迫代替她去往敵國和親晶密。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容