《前端》常用的Array 對象方法總結

1、concat

2、indexOf:

搜索數組中的元素,並返回它所在的位置。(可用作統計)

統計數組 arr 中值等於 item 的元素出現的次數:

function count(arr, item) {
     var count = 0;
     arr.forEach(function(e){
         //e爲arr中的每一個元素,與item相等則count+1
         e == item ? count++ : 0;
     });
     return count;
 }

indexOf()只會返回找到的第一個元素索引。

 

3、增刪方法


pop:刪除數組的最後一個元素並返回刪除的元素。

push:向數組的末尾添加一個或更多元素,並返回新的長度。

shift:刪除並返回數組的第一個元素。

unshift:向數組的開頭添加一個或更多元素,並返回新的長度。

4、reverse

5、slice:

選取數組的的一部分,並返回一個新數組。

語法

array.slice(startend)

參數 描述
start 必需。規定從何處開始選取。如是負數,它規定從數組尾部開始算起的位置.即-1 指最後一個元素,-2 指倒數第二個元素,以此類推。
end 可選。規定從何處結束選取。該參數是數組片斷結束處的數組下標。如果沒有指定該參數,那麼切分的數組包含從 start 到數組結束的所有元素。如果這個參數是負數,那麼它規定的是從數組尾部開始算起的元素。


slice()可以從已有的數組中返回選定的元素,arr.slice(0)表示從第0個參數取到最後一個元素,是Javascript中複製數組的一種方式。

6、splice:

從數組中添加或刪除元素。注意:這種方法會改變原始數組。

語法

array.splice(index, howmany[,item1,.....,itemX])

參數 描述
index 必需。整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置。
howmany 必需。要刪除的項目數量。如果設置爲 0,則不會刪除項目。
item1, ..., itemX 可選。向數組添加的新項目。

返回值

如果僅刪除一個元素,則返回一個元素的數組。 如果未刪除任何元素,則返回空數組。

常見錯誤:這樣爲什麼會輸出空數組?

function insert(arr,item,index){
    return arr.slice(0).splice(index,0,item);
}
//這樣爲什麼會輸出空數組?

原因:注意splice()的返回值。splice() 方法從數組中添加/刪除項目,然後返回被刪除的項目。上面返回的是splice方法返回的對象,不是處理後的數組。

7、toString

8、sort:

9、map:

map() 方法返回一個新數組,數組中的元素爲原始數組元素調用函數處理後的值。

注意:map() 方法按照原始數組元素順序依次處理元素。 map() 不會對空數組進行檢測。map() 不會改變原始數組。

語法

array.map(function(currentValue,index,arr), thisValue)

currentValue爲必填項。

js中map()和 foreach()的區別

forEach()方法不會返回執行結果,而是undefined。也就是說,forEach()會修改原來的數組。而map()方法會得到一個新的數組並返回。

 

 

 

 

例:找出數組 arr 中重複出現過的元素

function duplicates(arr) {
     //聲明兩個數組,a數組用來存放結果,b數組用來存放arr中每個元素的個數
     var a = [],b = [];
     //遍歷arr,如果以arr中元素爲下標的的b元素已存在,則該b元素加1,否則設置爲1
     for(var i = 0; i < arr.length; i++){
         if(!b[arr[i]]){
             b[arr[i]] = 1;
             continue;
         }
         b[arr[i]]++;
     }
     //遍歷b數組,將其中元素值大於1的元素下標存入a數組中
     for(var i = 0; i < b.length; i++){
         if(b[i] > 1){
             a.push(i);
         }
     }
     return a;
 }

例:在數組 arr 中,查找值與 item 相等的元素出現的所有位置

||--短路用法    或者

val == target &&  temp.push(index);中的&&用法。

function findAllOccurrences(arr, target) {
var temp = [];
    arr.forEach(function(val,index){
        val !== target ||  temp.push(index);
    });
    return temp;
}

當時我用了indexOf(),它只會返回找到的第一個元素索引。

例:給定的 js 代碼中存在全局變量,請修復

function globals() {
    //只需要在聲明myObject時加上var就行了
    var myObject = {
      name : 'Jory'
    };
 
    return myObject;
}

疑問:Javascript全局變量var與不var的區別?

在全局作用域裏,用下面3種形式都可以創建對全局可見的命名:

<script>
    var a = 1;
    b = 2;
    window.c = 3;
</script>

對於b=2這種方式, 它其實和c是一樣的,在執行這個賦值語句的時候,會沿着作用域鏈尋找名字叫做b的變量,一直找到作用域鏈的頂端還沒有找到,於是給window添加一個屬性b然後賦值。

var與不var區別:

1 、使用var聲明變量,在方法內部是局部變量,在方法外部是全局變量

2、沒有使用var聲明的變量,在方法內部或外部都是全局變量,但如果是在方法內部聲明,在方法外部使用之前需要先調用方法,告知系統聲明瞭全局變量後方可在方法外部使用。

例:parse2Int的用法

parseInt(string, radix)

當參數 radix 的值爲 0,或沒有設置該參數時,parseInt() 會根據 string 來判斷數字的基數。

如果 string 以 "0x" 開頭,parseInt() 會把 string 的其餘部分解析爲十六進制的整數。如果 string 以 0 開頭,那麼 ECMAScript v3 允許 parseInt() 的一個實現把其後的字符解析爲八進制或十六進制的數字。如果 string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析爲十進制的整數。

 

 

 

 

 

 

 

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章