JavaScript學(xué)習(xí)總結(jié)之?dāng)?shù)組

Array類型

"可以保存任何類型的數(shù)據(jù),并且大小可以調(diào)整的.“

一、創(chuàng)建實(shí)例

1、使用Array構(gòu)造函數(shù)
var color = new Array();

2、使用數(shù)組字面量表示法
var color = ["red","blue","yellow"];

  • 其中需要注意的是:強(qiáng)烈建議不要使用 var option = [,,,,];

3、元素的讀取和設(shè)置使用【】+下標(biāo)
4、數(shù)組長度使用.length

二、檢測數(shù)組

對(duì)于一個(gè)網(wǎng)頁或者一個(gè)全局作用域而言,使用instanceof操作符就能得到滿足的結(jié)果,但是對(duì)于網(wǎng)頁包含多個(gè)框架,從而會(huì)存在兩個(gè)以上不同版本的Array構(gòu)造函數(shù)。所以引進(jìn)了Array.isArray()方法,具體用法如下:
if(Array.isArray(value)) { }

三、轉(zhuǎn)換方法

如前所述,所有對(duì)象都具有toLocaleString()、toString()和valueOf()方法。
1、toString()方法:返回由數(shù)組中每個(gè)值得字符串形式拼接而成的一個(gè)以逗號(hào)分隔的字符串;
2、toLocaleString()方法:經(jīng)常也會(huì)返回與toString()和valueOf()方法相同的值,但唯一不同之處在于:為了取得每一項(xiàng)的值,調(diào)用的是每一項(xiàng)的toLocaleString()方法,而不是toString()方法,請(qǐng)看下面的例子

var person1 = {
   toLocaleString : function () {
          return "Nikolaos";
  },
  toString : function() {
         return "Nicholas";
  }
};
var person2 = {
  toLocaleString : function () {
          return "Grigorios";
  },
  toString : function() {
         return "Greg";
  }
};

var people = [person1,person2];
alert(people);  //Nicholas,Greg
alert(people.toString());  //Nicholas,Greg
alert(people.toLocaleString());  //Nikolaos,Grigorios

4、前三種方法,在默認(rèn)情況下都會(huì)返回以逗號(hào)分隔的字符串。而如果使用join()方法,則可以使用不同的分隔符來構(gòu)建這個(gè)字符串。join()方法只接受一個(gè)參數(shù),即用作分隔符的字符串,然后返回包含所有數(shù)組項(xiàng)的字符串。

四、棧和隊(duì)列方法

1、棧方法

function Stack(){
     var items=[];//用數(shù)組來保存棧中的數(shù)據(jù);
     this.push=function(element){
      items.push(element);
     };
     this.pop=function(){
      return items.pop();
     };
     this.peek=function(){
      return items[items.length-1];
     };
     this.isEmpty=function(){
      return items.length == 0;
     };
     this.size=function(){
      return items.length;
     }
     this.clear=function(){
      items=[];
     }
     this.toString=function(){
      return items.toString();
     };
   }

主要是兩個(gè)方法:push():添加到數(shù)組的末尾;pop():從末尾移除最后一項(xiàng);
2、隊(duì)列方法

function Queue(){
     var items=[];//用數(shù)組來保存棧中的數(shù)據(jù);
     this.enqueue=function(element){
      items.push(element);
     };
     this.dequeue=function(){
      return items.shift();
     };
     this.font=function(){
      return items[0];
     };
     this.isEmpty=function(){
      return items.length == 0;
     };
     this.size=function(){
      return items.length;
     }
     this.clear=function(){
      items=[];
     }
     this.toString=function(){
      return items.toString();
     };
   }

主要兩個(gè)方法:push()方法和shift()方法:從數(shù)組的前端取得項(xiàng);

五、重排序方法

1、reverse()方法:返回?cái)?shù)組項(xiàng)的逆序;
2、sort()方法

sort(function compare(value1,value2){
  return value1 - value2; //升序
  return value2 - value1; //降序
});

六、操作方法

1、concat()方法可以基于當(dāng)前數(shù)組中的所有項(xiàng)創(chuàng)建一個(gè)新數(shù)組,將接收到的參數(shù)添加到這個(gè)副本的末尾;

var colors = ["red","green","blue"];
var colors2 = colors.concat("yellow",["black","brown"]);
alert(colors2); // red,green,blue,yellow,black,brown;

2、slice()方法可以基于一個(gè)或多個(gè)項(xiàng)創(chuàng)建一個(gè)新數(shù)組??梢越邮諆蓚€(gè)參數(shù),一個(gè)起始位置,一個(gè)結(jié)束為止,當(dāng)只有一個(gè)參數(shù)時(shí),從起始位置到數(shù)組末尾項(xiàng);

var colors = ["red","green","blue","yellow"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,2);
alert(colors2); //green,blue,yellow;
alert(colors3); // green,blue;

3、splice()方法:刪除、插入、替換,返回一個(gè)包含從原始數(shù)組中刪除的項(xiàng)的數(shù)組。
刪除:splice(起始位置,刪除項(xiàng)數(shù));
插入:splice(起始位置,0,...,...);
替換:splice(起始位置,1,...,...);

七、位置方法

1、indexOf(起始位置,尋找的元素):從數(shù)組開頭開始向后找;
2、lastIndexOf(起始位置,尋找的元素):從數(shù)組末尾開始向前找;
這兩個(gè)方法都返回要查找的項(xiàng)在數(shù)組中的位置,或者在沒有找到的情況下返回-1;

八、迭代方法

ECMAScript5為數(shù)組定義了5個(gè)迭代方法。每個(gè)方法都接受兩個(gè)參數(shù):要在每一項(xiàng)上運(yùn)行的函數(shù)和(可選的)運(yùn)行該函數(shù)的作用域?qū)ο?-影響this的值。傳入這些方法中的函數(shù)會(huì)接受三個(gè)參數(shù):數(shù)組項(xiàng)的值、該項(xiàng)在數(shù)組中的位置和數(shù)組對(duì)象本身。
1、every(function(item,index,array){}) 每一項(xiàng)都返回true,結(jié)果才為true

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){
   return (item>2);
});
alert(everyResult); //false;

2、some(function(item,index,array){}) 對(duì)任一項(xiàng)返回true,結(jié)果就為true;

var someResult = numbers.some(function(item,index,array){
     return (item>2);
});
alert(someResult); //true;

3、filter(function(item,index,array){}) 返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){
   return (item>2);
});
alert(filterResult); //[3,4,5,4,3];

4、forEach(function(item,index,array){}) 對(duì)數(shù)組每一項(xiàng)執(zhí)行函數(shù),沒有返回值
5、map(function(item.index,array){}) 返回每次函數(shù)調(diào)用結(jié)果的數(shù)組

var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item,index,array){
   return item*2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2];

九、歸并方法

ECMAScript5還信增了兩個(gè)歸并數(shù)組的方法:reduce()和reduceRight()。這兩個(gè)方法都會(huì)迭代數(shù)組的所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值。這連個(gè)方法都接收兩個(gè)參數(shù):一個(gè)在每一項(xiàng)上調(diào)用的函數(shù)和(可選)作為歸并基礎(chǔ)的初始值。傳入的函數(shù)接收4個(gè)參數(shù):前一個(gè)值、當(dāng)前值、項(xiàng)的索引和數(shù)組對(duì)象本身。
1、reduce(function(prev,cur,index,array){}),從數(shù)組的第一項(xiàng)開始,逐個(gè)遍歷到最后。使用reduce()方法可以執(zhí)行求數(shù)組中所有值之和的操作。比如:

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
       return prev + cur;
});
alert(sum); //15;

2、reduceRight(function(prev,cur,index,array){}) 從數(shù)組的最后一項(xiàng)開始hi,向前遍歷到第一項(xiàng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容