數組reduce和map方法


1、有一個長度為100的數組,請以優雅的方式求出該數組的前10個元素之和

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
sum = 0;

sum = a.slice(0, 10).reduce(function(pre, current) {
  return pre + current;
});

console.log(sum); //55

 

2、不使用loop循環,創建一個長度為100的數組,並且每個元素的值等於它的下標。

var a = new Array(100);

    a = a.map(function(item, index) {
        return index;
    });

使用了map方法真是高端大氣上檔期啊!一開始,我也以為他的答案是正確的了,但是,后來我在控制台打印了一下,卻發現也是不對的啊,因為,最終打出來的數組是一個長度為100的空的數組,如下:

 

好奇怪!這么好用的方法竟然輸出的結果也不正確,心好累啊!

后來,查了API,才知道, JavaScript數組是稀疏數組,比如,通過new Array(100)創建一個新的數組的,雖然他的長度是100,但是實際上他是一個空數組,也就是說沒有真實存在的元素。所以使用map方法,根本不會去遍歷這個數組100次的。后來,知乎上問了一下,才學到了一個新的可行的方法,如下:


    var a = Array(100).join(",").split(",").map(function(item, index) {
      return index;
    });




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM