js中操作數(shù)組的方法

????時(shí)隔一個(gè)月竣稽,一直在忙囱怕,今天就抽空總結(jié)下js中操作數(shù)組的方法霍弹。最后幾條是重點(diǎn)!

1娃弓、鎖定數(shù)組的長(zhǎng)度 Object.defineProperty方法(讓數(shù)組的長(zhǎng)度變成只讀)典格。

??這個(gè)屬性方法是Vue的核心方法,今天就放在第一個(gè)了解台丛,他可以使數(shù)組長(zhǎng)度只讀耍缴,數(shù)組內(nèi)容可以修改,但是如果方法改變數(shù)組長(zhǎng)度,例如push挽霉,pop等防嗡,就會(huì)報(bào):Cannot assign to read only property 'length' of object '[object Array]' [](javascript:;)無(wú)法分配對(duì)象“對(duì)象數(shù)組”的只讀屬性“長(zhǎng)度”這個(gè)錯(cuò)誤。

var a = [1,2,3]  //定義一個(gè)數(shù)組
Object.defineProperty(a,"length",{
   writable:false
})  //將a數(shù)組的長(zhǎng)度屬性設(shè)為只讀
a.length = 0  //將a的長(zhǎng)度改為0
console.log(a.length);  //打印a數(shù)組的長(zhǎng)度侠坎,還是3

2蚁趁、Array.join()方法,返回一個(gè)字符串

??和分割字符串split方法很像实胸,和String的split()方法是一個(gè)相反的操作他嫡。join方法可以把數(shù)組中的所有元素放入一個(gè)字符串,并且不改變?cè)瓟?shù)組童芹。join("#")括號(hào)里面#可以寫任意字符涮瞻,作為分割符。

var a = [1,2,3];
var b = a.join("");
var c = a.join("##");
console.log(a); //[1, 2, 3],原數(shù)組不改變
console.log(b); //"123",變成字符串
console.log(c); //"1##2##3",變成字符串

3假褪、Array.reverse()方法署咽,返回逆序數(shù)組

var a = ['我','是','中','國(guó)','人'];
a.reverse();
console.log(a); //直接改變a數(shù)組的值 返回的是["人", "國(guó)", "中", "是", "我"];

4、Array.sort()方法生音,返回排序后的數(shù)組宁否。如果數(shù)組包含undefined,會(huì)被排到數(shù)組的尾部缀遍。如果不帶參數(shù)的調(diào)用sort()慕匠,數(shù)組元素以字母表順序排序

// 從大到小
var a = [2,33,1111,444];        
a.sort()             
console.log(a); //返回的結(jié)果是[1111, 2, 33, 444]

// 從小到大
var a = [2,33,1111,444];             
a.sort(function (a,b) {
    return a-b
})         
console.log(a); //[2, 33, 444, 1111]

5、Array.concat()連接兩個(gè)數(shù)組,創(chuàng)建并返回一個(gè)新數(shù)組

var a = [1,2,3];             
var b = a.concat(4,5);             
var c = a.concat([4,5]);
console.log(a); //返回的還是[1,2,3]
console.log(b); //返回[1,2,3,4,5]
console.log(c);  //返回[1,2,3,4,5]

6域醇、Array.slice()方法台谊,返回指定數(shù)組的片段或者子數(shù)組,不會(huì)改變?cè)瓟?shù)組

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

a.slice(0,3); //返回[1,2,3] 第一個(gè)參數(shù)是截取開始的位置(包括)譬挚,第二個(gè)參數(shù)是截取結(jié)束的位置(不包括)
             
a.slice(3); //返回[4,5]
             
a.slice(1,-1); //返回[2,3,4] 負(fù)數(shù)表示倒數(shù)
             
console.log(a); //返回[1,2,3,4,5]

7锅铅、Array.splice()方法,用來(lái)刪除或插入元素减宣,會(huì)修改原數(shù)組

var a = [1,2,3,4,5,6,7,8];
             
var b = a.splice(1,2); //第一個(gè)參數(shù)是截取的起始位置(包括)盐须,第二個(gè)參數(shù)是截取的個(gè)數(shù),之后的參數(shù)就是添加在元數(shù)組的新值
             
console.log(a); //返回[1, 4, 5, 6, 7, 8]
             
console.log(b); //返回[2, 3]

8漆腌、push()方法與pop()方法

??push()方法在數(shù)組的尾部添加一個(gè)或者多個(gè)元素贼邓,并返回?cái)?shù)組的新長(zhǎng)度阶冈。注意的是,改變的是原數(shù)組的值塑径,返回的是新數(shù)組的長(zhǎng)度女坑。

??pop()方法刪除數(shù)組的最后一個(gè)元素,并返回它的刪除值晓勇。也是改變?cè)瓟?shù)組堂飞,返回的是刪除的值。

9绑咱、unshift()方法與shift()方法

??unshift()方法類似于push()不同的是绰筛,他是在數(shù)組頭部添加,其他都一樣

??shift()移除數(shù)組中的第一項(xiàng)并返回該項(xiàng)描融。

10铝噩、toString()和toLocaleString()

toString()方法將每個(gè)元素轉(zhuǎn)化為字符串,類似于不傳參的join()方法窿克。

toLocaleString()方法是toString()的本地化版本骏庸。

11、filter(過(guò)濾年叮,返回符合條件過(guò)濾后的數(shù)組)

var a = [1,2,3,4,5];
             
var b = a.filter(function (value) {
    return value > 3
})
             
console.log(b); //返回[4,5]

12具被、map (返回操作后的數(shù)組,和forEach()類似)

var a = [1,2,3,4,5];
             
var b = a.map(function (value) {
    return value+1
})
             
console.log(b); //返回[2,3,4,5,6]

13只损、includes (判斷數(shù)組中是否有某個(gè)值一姿,返回布爾)

var a = [1,2,3,4,5];
console.log(a.includes(1)) // true

14、find (找到某個(gè)值跃惫,返回的是找到的值)


/**
array.find(function(currentValue, index, arr),thisValue)
currentValue 必需叮叹。當(dāng)前元素
index 可選。當(dāng)前元素的索引值
arr 可選爆存。當(dāng)前元素所屬的數(shù)組對(duì)象
thisValue  可選蛉顽。 傳遞給函數(shù)的值一般用 "this" 值。
如果這個(gè)參數(shù)為空先较,“undefined”會(huì)傳給“this”值
*/

var a = [1,2,3,4,5];
a.find(function(val){
  console.log(val>3)
})

15携冤、every (判斷數(shù)組是否都符合條件,返回布爾)

只有數(shù)組中所有元素都滿足某個(gè)條件才會(huì)返回true闲勺;

var a = [1,2,3,4,5];
           
a.every(function (value) {
    return value < 10
}) //true

16噪叙、some (找到某個(gè)值返回布爾)

只要有滿足條件的值,就返回true霉翔。

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

a.every(function (value) {
    return value % 2 === 0
}) //false

17、reduce (參數(shù):prev苞笨,next债朵,index子眶,arr原數(shù)組)常用于數(shù)組求和

callback (執(zhí)行數(shù)組中每個(gè)值的函數(shù),包含四個(gè)參數(shù))

    1序芦、previousValue (上一次調(diào)用回調(diào)返回的值臭杰,或者是提供的初始值(initialValue))
    2、currentValue (數(shù)組中當(dāng)前被處理的元素)
    3谚中、index (當(dāng)前元素在數(shù)組中的索引)
    4渴杆、array (調(diào)用 reduce 的數(shù)組)

initialValue (作為第一次調(diào)用 callback 的第一個(gè)參數(shù)。)


// 計(jì)算商品中價(jià)格
let sum1 = [{price:30,count:2},{price:40,count:3},{price:30,count:4}].reduce(function(prev, next) {
  return prev+next.price*next.count
},0) // 默認(rèn)指定第一次的prev
console.log(sum1)  // 300

// 將多維數(shù)組轉(zhuǎn)化為一維數(shù)組
let flat = [[1,2,3],[4,5,6],[7,8,9]].reduce(function(prev, next){
  return prev.concat(next);
})
console.log(flat) // [1, 2, 3, 4, 5, 6, 7, 8, 9]

就總結(jié)到這里了宪塔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末磁奖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子某筐,更是在濱河造成了極大的恐慌比搭,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件南誊,死亡現(xiàn)場(chǎng)離奇詭異身诺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)抄囚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門霉赡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人幔托,你說(shuō)我怎么就攤上這事穴亏。” “怎么了柑司?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵迫肖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我攒驰,道長(zhǎng)蟆湖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任玻粪,我火速辦了婚禮隅津,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘劲室。我一直安慰自己伦仍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布很洋。 她就那樣靜靜地躺著充蓝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谓苟,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天官脓,我揣著相機(jī)與錄音,去河邊找鬼涝焙。 笑死卑笨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仑撞。 我是一名探鬼主播赤兴,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隧哮!你這毒婦竟也來(lái)了桶良?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤近迁,失蹤者是張志新(化名)和其女友劉穎艺普,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鉴竭,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歧譬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搏存。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑰步。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖璧眠,靈堂內(nèi)的尸體忽然破棺而出缩焦,到底是詐尸還是另有隱情,我是刑警寧澤责静,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布袁滥,位于F島的核電站,受9級(jí)特大地震影響灾螃,放射性物質(zhì)發(fā)生泄漏题翻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一腰鬼、第九天 我趴在偏房一處隱蔽的房頂上張望嵌赠。 院中可真熱鬧,春花似錦熄赡、人聲如沸姜挺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)炊豪。三九已至凌箕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間词渤,已是汗流浹背陌知。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掖肋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓赏参,卻偏偏與公主長(zhǎng)得像志笼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子把篓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354