數(shù)組常用操作 后續(xù)會(huì)補(bǔ)充

var s="A man, a plan, a canal: Panama"

1.數(shù)組去掉空格和標(biāo)點(diǎn)符號并轉(zhuǎn)為大寫

var?str=s.replace(/(\W|_)/g,"").toUpperCase();

2.數(shù)組刪除指定下標(biāo)

第一種? ?splice? (刪除的同時(shí)把該元素所占的空間也刪除? ,后面向前補(bǔ))

arr.splice(a,b)? //a為刪除的指定下標(biāo)? ?b為從a下標(biāo)開始刪除幾個(gè)

? ?splice還有多種用法??

? ? ? ? ? ? var? c=['a','b','c','d','e','f'];? ??

? ? ? ? ? ?1.添加?? ?c.splice(1,0,'str');?//結(jié)果arr=['a','str','b','c','d','e','f'];

? ? ? ? ? ?2.替換:?c.splice(1,1,'str');?//結(jié)果arr=['a','str','c','d','e','f'];

? ? ? ? ? ? 這兩種用法? 括號里的值代表(指定下標(biāo)兔魂,0為添加? 大于0的都為替換數(shù)量 也就是說 從當(dāng)前下標(biāo)要替換幾個(gè)族跛, 要添加或者替換的值 )

第二種? ?delete? ? (只刪除元素? 捐康,當(dāng)前元素下標(biāo)為? undefined)

delete? arr[下標(biāo)];

3.把數(shù)組通個(gè)某個(gè)符號連接起來拼成一個(gè)字符串

var arr1=['你','好','哇']庸蔼;

var arr1str=arr1.jion(',')? ? ?//括號里需要加引號哦? ? ?輸出你,好,哇

在把字符串變成數(shù)組則可以用 split(‘,’) //也需要引號? ? 輸出?['你','好','哇']


4.數(shù)組合并? (返回一個(gè)新的數(shù)組)

(參考https://www.jb51.net/article/172722.htm)

var a=[1,2,3];

var b=[4,5,6];

第一種? ? concat()??

? ??js的Array對象提供了一個(gè)叫concat()方法解总,連接兩個(gè)或更多的數(shù)組,并返回結(jié)果姐仅,a和b不變數(shù)據(jù)不變花枫。

var c = a.concat(b); //c=[1,2,3,4,5,6];

這里有一個(gè)問題,concat方法連接a掏膏、b兩個(gè)數(shù)組后劳翰,a、b兩個(gè)數(shù)組的數(shù)據(jù)不變馒疹,同時(shí)會(huì)返回一個(gè)新的數(shù)組佳簸。這樣當(dāng)我們需要進(jìn)行多次的數(shù)組合并時(shí),會(huì)造成很大的內(nèi)存浪費(fèi)颖变,如果是數(shù)據(jù)量比較小的時(shí)候生均,還可以勉強(qiáng)用,如果數(shù)據(jù)量大的時(shí)候腥刹,這個(gè)就不妥了马胧,所以這個(gè)方法肯定不是最好的。

第二種 for循環(huán)

遍歷其中一個(gè)數(shù)組衔峰,把該數(shù)組中的所有元素依次添加到另外一個(gè)數(shù)組中佩脊。直接上代碼:

for( var i in b){

??a.push(b[i]);

}

這樣的寫法可以解決第一種方案中對內(nèi)存的浪費(fèi),但是會(huì)有另一個(gè)問題:丑垫卤!這么說不是沒有道理威彰,如果能只用一行代碼就搞定,豈不快哉~

第三種?apply

函數(shù)的apply方法有一個(gè)特性穴肘,那就是func.apply(obj,argv)歇盼,argv是一個(gè)數(shù)組。所以我們可以利用這點(diǎn)梢褐,直上代碼:

a.push.apply(a,b);

調(diào)用a.push這個(gè)函數(shù)實(shí)例的apply方法旺遮,同時(shí)把,b當(dāng)作參數(shù)傳入盈咳,這樣a.push這個(gè)方法就會(huì)遍歷b數(shù)組的所有元素耿眉,達(dá)到合并的效果。

這里可能有點(diǎn)繞鱼响,我們可以把b看成[4,5,6]鸣剪,變成這樣:

a.push.apply(a,[4,5,6]);? ?等同于??a.push(4,5,6);

5. 數(shù)組去重

第一種? for循環(huán)?

創(chuàng)建一個(gè)新的空數(shù)組? ,用for循環(huán)遍歷進(jìn)去 同時(shí)查看一下是否有重復(fù)的? 如果是多數(shù)組 可以先合并!?鸷А债鸡!

var one=[];

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

if(one.indexOf(a[i])<0){? ?//查看當(dāng)前one數(shù)組里面有沒有a[i]? 沒有會(huì)返回-1? 有會(huì)返回當(dāng)前a[i]在one中的下標(biāo)

one.push(a[i])

}

}?

第二種? 先排序 然后用for循環(huán)進(jìn)行遍歷? ?運(yùn)用indexOf查看是否重復(fù)


6.把當(dāng)前數(shù)組累加 / 累乘 遞歸? ?reduce(arr);?? reduceRight()

reduce() 方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值(從左到右)開始縮減铛纬,最終計(jì)算為一個(gè)值厌均。

reduceRight()? 從數(shù)組的最后一項(xiàng)開始,向前遍歷到第一項(xiàng)

var a=[1,2,3,4,5];

function getSum(x, y) {

? ? return x+ y;? //+號可以換成*??

}

console.log(a.reduce(getSum))? ? //? +號下? 最后值為15? ?* 號下 最后值為120


7.數(shù)組排序??

sort() 在原數(shù)組上進(jìn)行排序? 可以從大到小? 或者 從小到大

var a = [6,4,2,8,22];

//小->大

a.sort(function(x,y){

? ? return x - y;

})??

console.log(a);? // [2, 4, 6, 8, 22]

? //大->小

a.sort(function(x,y){

? ? return y - x;

})

console.log(a);? ?// [22, 8, 6, 4, 2]


reverse()? ?把當(dāng)前數(shù)組顛倒順序

a.reverse()? // [22,8,2,4,6];


8.數(shù)組添加? ?(會(huì)改變原數(shù)組)

push()? ?在數(shù)組的末尾添加? 返回?cái)?shù)組的新長度

unshift? ?在數(shù)組的頭部添加? ? 返回?cái)?shù)組的新長度

?var a=[1,2,3,4];

console.log(a.push(125));? ? ? //? ?5

console.log(a.unshift(0));? ? ? ? //? 6

console.log(a.pop());? ? ? ? ? ? ? ? ?//125

console.log(a.shift());? ? ? ? ? ? ? ? ?//? 0

9.數(shù)組刪除

pop()? ?刪除數(shù)組末尾的數(shù) 并返回被刪除的數(shù)

shift()? ? 刪除數(shù)組開頭的數(shù) 并返回被刪除的數(shù)

10.every()和some()

every() 判斷數(shù)組中每一項(xiàng)都是否滿足條件告唆,只有所有項(xiàng)都滿足條件棺弊,才會(huì)返回true。類似&&

some() 判斷數(shù)組中是否存在滿足條件的項(xiàng)擒悬,只要有一項(xiàng)滿足條件模她,就會(huì)返回true。類似 ||

var arr = [1, 2, 3, 4, 5, 6];

arr.every(x=>x>0);//return true;

arr.every(x=>x>5);//return false;

arr.some(x=>x>5);//return true;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末懂牧,一起剝皮案震驚了整個(gè)濱河市侈净,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌僧凤,老刑警劉巖畜侦,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拼弃,居然都是意外死亡夏伊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門吻氧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咏连,你說我怎么就攤上這事盯孙。” “怎么了祟滴?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵振惰,是天一觀的道長。 經(jīng)常有香客問我垄懂,道長骑晶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任草慧,我火速辦了婚禮桶蛔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘漫谷。我一直安慰自己仔雷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碟婆,像睡著了一般电抚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竖共,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天蝙叛,我揣著相機(jī)與錄音,去河邊找鬼公给。 笑死借帘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妓布。 我是一名探鬼主播姻蚓,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匣沼!你這毒婦竟也來了狰挡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤释涛,失蹤者是張志新(化名)和其女友劉穎加叁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唇撬,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡它匕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窖认。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豫柬。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖扑浸,靈堂內(nèi)的尸體忽然破棺而出烧给,到底是詐尸還是另有隱情,我是刑警寧澤喝噪,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布础嫡,位于F島的核電站,受9級特大地震影響酝惧,放射性物質(zhì)發(fā)生泄漏榴鼎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一晚唇、第九天 我趴在偏房一處隱蔽的房頂上張望巫财。 院中可真熱鬧,春花似錦缺亮、人聲如沸翁涤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葵礼。三九已至号阿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸳粉,已是汗流浹背扔涧。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留届谈,地道東北人枯夜。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像艰山,于是被迫代替她去往敵國和親湖雹。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

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