2019-03-04

// 改變原數(shù)組的方法
let a = [1,2,3,4,5];

/* var b = a.pop();   // 刪除數(shù)組的最后一個并返回這一個辽旋,改變了原數(shù)組
console.log(a, b); */ // [ 1, 2, 3, 4 ] 5 

/* var b = a.push(6); // 往后面添加一個并返回耿焊,改變了原數(shù)組
console.log(a, b); // [ 1, 2, 3, 4, 5, 6 ] 6 */

/* //splice (index, length, insert1, insert2)  從index開始刪除幾個,并添加, 返回刪除后的數(shù)組
var b = a.splice(1, 0, 6, 7); 
console.log(a, b); //[ 1, 6, 7, 3, 4, 5 ] [ 2 ] */

/* var b = a.shift(); // 刪除數(shù)組的第一個距潘,并返回這一個孕暇, 同樣改變了原數(shù)組
console.log(a, b); */

/* var b = a.unshift(6); // 數(shù)組最前面插入一個仑撞, 并返回插入的這個, 改變了原數(shù)組
console.log(a, b); //[ 1, 2, 3, 4, 5 ] 5 */

// push 后添加 pop 后刪除
// shift 前刪除 unshift 前添加 
// splice 指定位置刪除和插入

// 數(shù)組反轉(zhuǎn)順序
// console.log(a.reverse());

// 數(shù)組排序 -
/* a.sort((a,b)=>{
    return b-a;
});
console.log(a);  //[ 5, 4, 3, 2, 1 ] */

/* a.length--; // 也能改變原數(shù)組
console.log(a);  //[ 1, 2, 3, 4 ] */

//----------以上都可以改變原數(shù)組--------------//


//----------下面這些不會改變原數(shù)組--------------//
// 字符串的截取妖滔,并沒有改變原數(shù)組
/* var  b = a.slice(1,3); // (start, end) 截取第start到end之間的(不包含end)
console.log(a, b); //[ 1, 2, 3, 4, 5 ] [ 2, 3 ] */

// 數(shù)組的遍歷: foreach map filter some every reduce 隧哮,

// 1 forEach 單純的循環(huán)遍歷, 不會生成新的數(shù)組
/* var b = a.forEach((value, index,arr)=>{
    return value+1; 
});
console.log(a, b); //[ 1, 2, 3, 4, 5 ] undefined */

// map 遍歷,返回一個新的數(shù)組,(不管有沒有返回值)
/* var b = a.map((value, index, arr)=>{
                    // 1 沒有return時座舍, b = [ undefined, undefined, undefined, undefined, undefined ]
    return value+1; // 2 有return時返回return的值沮翔,b= [ 2, 3, 4, 5, 6 ]

});
console.log(a , b); //[ 1, 2, 3, 4, 5 ] [ undefined, undefined, undefined, undefined, undefined ] */

// filter 遍歷, 返回符合條件的值到新數(shù)組, 如果都不符合條件為空數(shù)組[]曲秉, 也就是回掉函數(shù)結(jié)果返回true才會插入到新數(shù)組
/* 
var b = a.filter((value, index, arr)=>{
    // 1. 沒有返回值 b=[]
    
    // 2. 
    // return 1; // b = [ 1, 2, 3, 4, 5 ]
    // return 0;  //b = []

    // 3 
     return value>1; //[ 2, 3, 4, 5 ] // value>1 為true時才會插入到新數(shù)組

});
console.log(a,b); 
 */

/*  總結(jié): 都可以遍歷采蚀, 原數(shù)組都不會發(fā)生改變
filter: 單純的遍歷數(shù)組疲牵, 沒有返回值
map: 返回新數(shù)組,將回掉函數(shù)的返回結(jié)果插入到新函數(shù)
filter 返回新數(shù)組榆鼠,回掉函數(shù)返回true時纲爸,將原數(shù)組的值插入到新數(shù)組 
*/

// 返回一個布爾值, 遍歷的回掉返回值都為true時才返回true, 否則返回false, 中途就會停止循環(huán)
/*
var b  = a.every((value, index,arr)=>{
    console.log(value);
    return value>6;
});
console.log(a, b); 
// 1
// [ 1, 2, 3, 4, 5 ] false 
*/


// 和every 相反,會一直遍歷妆够,直到有一個回掉返回true识啦,就會終止循環(huán)返回true
/*
var b = a.some((value, index,arr)=>{
    console.log(value);
    return value>2;
});
console.log(a, b);
*/
/*以上返回如下:
1
2
3
[ 1, 2, 3, 4, 5 ] true
 */ 

 // 把每一次回掉函數(shù)的返回值,作為下一次的prev,  最后返回最總結(jié)果
 // 可以理解為迭代器责静,可以用戶求和袁滥,求乘積等等
 // ps: 如果沒有默認initValue, 那么第一次的prev是數(shù)組的第一個值,從第二次開始循環(huán)灾螃,數(shù)組少循環(huán)一次
 /*
 var b = a.reduce((prev,cur, curIndex, arr)=>{
     console.log(prev, cur, curIndex, arr);
    //  return cur;
    return prev+cur;
 },0);
 console.log(a, b);
 */
 /* 以上輸出結(jié)果:
0 1 0 [ 1, 2, 3, 4, 5 ]
1 2 1 [ 1, 2, 3, 4, 5 ]
3 3 2 [ 1, 2, 3, 4, 5 ]
6 4 3 [ 1, 2, 3, 4, 5 ]
10 5 4 [ 1, 2, 3, 4, 5 ]
[ 1, 2, 3, 4, 5 ] 15
 */

 //reduce 高級用法
 //1 計算數(shù)組中每個元素出現(xiàn)的次數(shù)
 var a2 = ['daya', 'daya2','daya3', 'daya', "daya2"];
 /* var b = a2.reduce((prev, cur, curIndex,arr)=>{
    if(cur in prev){
        prev[cur]++
    }else{
        prev[cur] = 1;
    }
    return prev;
 },{});
 console.log(b); //{ daya: 2, daya2: 2, daya3: 1 } */

 // 2. 數(shù)組去重
/*  
var b = a2.reduce((prev, cur, curIndex)=>{
    if(prev.includes(cur)){
        return prev;
    }else{
        return prev.concat(cur);
    }
},[]);
console.log(a, b) //[ 1, 2, 3, 4, 5 ] [ 'daya', 'daya2', 'daya3' ]
 */
// 3.將二維數(shù)組轉(zhuǎn)化為一維
/* 
var a3 = [0,[1,2],[3,4],[5],[6,7]];
var b = a3.reduce((prev, cur, curIndex, arr)=>{
    return prev.concat(cur);
},[]);
console.log(b); //[0, 1, 2, 3, 4, 5, 6, 7 ]
 */
// 4. 多為數(shù)組轉(zhuǎn)化為一維數(shù)組
/* 
var a4  = [0,[1,2],[3,4,[31,32,[33,34]]],[5],[6,7]];
var newArr = function(arr){
  return  arr.reduce((prev, cur)=>{
    return prev.concat(Array.isArray(cur)? newArr(cur): cur);
}, [])
};
var b = newArr(a4);
console.log(b); //[ 0, 1, 2, 3, 4, 31, 32, 33, 34, 5, 6, 7 ]
 */

 // 5.對象里的屬性求和
 /* 
 var a5 = [
     {
         subject:'math',
         score: 30
     },
     {
        subject:'chinese',
        score: 90
     },
     {
        subject:'english',
        score: 60
     }
    ]
 var b = a5.reduce((prev, cur, index)=>{
     return prev + cur.score;
 },0);
 console.log(b); // 180
 */

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末题翻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子腰鬼,更是在濱河造成了極大的恐慌嵌赠,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熄赡,死亡現(xiàn)場離奇詭異姜挺,居然都是意外死亡,警方通過查閱死者的電腦和手機彼硫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門炊豪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拧篮,你說我怎么就攤上這事词渤。” “怎么了串绩?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵缺虐,是天一觀的道長。 經(jīng)常有香客問我礁凡,道長高氮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任顷牌,我火速辦了婚禮剪芍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窟蓝。我一直安慰自己罪裹,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坊谁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滑臊。 梳的紋絲不亂的頭發(fā)上口芍,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音雇卷,去河邊找鬼鬓椭。 笑死,一個胖子當(dāng)著我的面吹牛关划,可吹牛的內(nèi)容都是我干的小染。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贮折,長吁一口氣:“原來是場噩夢啊……” “哼裤翩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起调榄,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤踊赠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后每庆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筐带,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年缤灵,在試婚紗的時候發(fā)現(xiàn)自己被綠了伦籍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡腮出,死狀恐怖帖鸦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情利诺,我是刑警寧澤富蓄,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站慢逾,受9級特大地震影響立倍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侣滩,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一口注、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧君珠,春花似錦寝志、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毫缆。三九已至,卻和暖如春乐导,著一層夾襖步出監(jiān)牢的瞬間苦丁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工物臂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旺拉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓棵磷,卻偏偏與公主長得像蛾狗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仪媒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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

  • 文|拉撒他 臺風(fēng)天看了宮崎駿的《風(fēng)立ちぬ/The Wind Rises》算吩,臺版翻譯為《風(fēng)起》蒲牧,大陸翻譯為《起風(fēng)了》...
    拉撒他閱讀 710評論 0 4
  • SDWebImage的簡單介紹a) SDWebImage支持異步圖片下載+緩存,提供了UIImageView+W...
    第1001號群眾演員閱讀 423評論 0 0
  • 人生最重要的不是活的清醒赌莺,而是要學(xué)會藏污納垢冰抢。 世人總覺得活的清醒才不會上當(dāng)受騙,才不會傻乎乎被恥笑艘狭,才不會失去利...
    浣心紗閱讀 1,257評論 4 3