數組遍曆方法對比

來源:互聯網
上載者:User

標籤:java   os   io   art   for   cti   

數組遍曆方法對比 forEach函數

函數說明: forEach(f [,o]): 此方法類似於for/in迴圈,其作用是遍曆整個數組並執行函數的某些操作,但它不會遍曆數組的屬性。它接受一個函數參數,該函數可以有1、2與3個參數。完整的三個參數分別為:數組中的每一個值,數組的索引,數組本身。這個函數沒有傳回值。

擷取數組方法:

function getArray(){  var a = new Array(10);  for(var i=0, j=a.length; j>i; i++)    a[i] = i+1;  return a;}

測試方法:

function testForEach(){  var a = getArray();  var b = a.forEach(function(e, i){    console.log(e, i);    if(0 === e % 2) return false;    else return true;  });  return [a, b];}testForEach()// @return [ [1-10], undefined ]

總結:

  • 參數第一個是elem,第二個才是index,這個和jQuery的$.fn.each方法不同;
  • 返回預設是undefined;
  • 對原數組沒有影響。
map函數

函數說明:類似於forEach()方法,但它有傳回值—一個新數組,它的參數函數必須有傳回值,參數函數的傳回值作為新數組的元素。其它用法與forEach()方法類似。

測試方法:

function testForEach(){  var a = getArray();  var b = a.map(function(e, i){    console.log(e, i);    if(0 === e % 2) return false;    else return true;  });  return [a, b];}testForEach()// @return [ [1-10], [true, false, true, false , ... ] ]

總結:

  • 參數也分別是elem, index;
  • 返回是一個數組,包含的元素是每個迭代的返回內容;
  • 對原數組沒有影響
filter函數

函數說明:對數組元素進行過濾,返回一個符合要求的新數組。

測試方法:

function testForEach(){  var a = getArray();  var b = a.filter(function(e, i){    console.log(e, i);    if(0 === e % 2) return false;    else return true;  });  return [a, b];}testForEach()// @return [ [1-10], [1,3,5,7,9] ]

總結:

  • 參數也分別是elem, index;
  • 返回是一個數組,在迭代裡返回true才會被push在返回的數組裡
  • 對原數組沒有影響
every函數

函數說明:有一個布爾類型的傳回值,函數參數f用來檢測數組元素是否滿足要求。有且只有數組全部元素都滿足f的要求時,才會返回true,否則返回false。

測試方法:

function testForEach(){  var a = getArray();  var b = a.every(function(e, i){    console.log(e, i);    if(0 === e % 2) return false;    else return true;  });  return [a, b];}testForEach()// @return [ [1-10], false ]function testForEach(){  var a = getArray();  var b = a.every(function(e, i){    console.log(e, i);    return true; // 直接改返回true  });  return [a, b];}testForEach()// @return [ [1-10], true ]

總結:

  • 參數也分別是elem, index
  • 不影響原數組
  • 在迭代中,一旦返回false,那就會中斷迭代,返回false; 如果順利迭代完成,則返回true;
some函數

函數說明:與every()方法不同,只要有數組元素滿足f的要求就返回true,否則返回false。

function testForEach(){  var a = getArray();  var b = a.some(function(e, i){    console.log(e, i);    if(0 === e % 2) return false;    else return true;  });  return [a, b];}// @return [ [1-10], true ]

總結:

  • 參數都也elem, index
  • 不影響原數組
  • 在迭代中,一旦返回false,那就會中斷迭代,但如果之前有一個返回true的也會返回true,如果沒就返回false;如果順利迭代完成,則返回true;
reduce函數

函數說明: reduce(f [, initial, index, array]): 對數組元素值進行計算。返回最後一次計算的值。函數f(x,y)接受兩個參數,如果有初始值,則把初始值作為x計算,然後把每一次的計算值作為下一次的x,把數組元素依次作為y。

a.reduce(function(x, y){console.log(x, y); return x + y;}, 0)// 0 1 VM1124:2// 1 2 VM1124:2// 3 3 VM1124:2// 6 4 VM1124:2// 10 5 VM1124:2// 15 6 VM1124:2// 21 7 VM1124:2// 28 8 VM1124:2// 36 9 VM1124:2// 45 10 VM1124:2// 55

reduceRight(): 與reduce()函數作用相同,只是它從右向左依次取數組元素。

indexOf函數

indexOf(value [, start]): 根據值來找到相應在數組中的索引位置,取多個匹配索引用最小的那個或在沒有匹配的情況下返回-1。

lastIndexOf(value [, start]): 與indexOf()函數相似,只是它是從後面向前面進行搜尋。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.