W007:常見Array操作

數組求和
1. forEach
forEach對數組中每一個元素都運行函數,該方法沒有返回值,如果你想對數據裏的每一個元素進行處理,可以採用forEach代替for循環。

function sum(arr) {
    var sum=0;
    arr.forEach(function(e){
        sum+=e;
    })
    return sum;
}

2. reduce
reduce()把一個函數作用在Array的元素上,這個函數必須接收兩個參數,reduce()把結果作爲返回值繼續和序列的下一個元素做累積計算。
即對數組中的所有元素調用指定的回調函數。

function sum(arr) {
    return arr.reduce(function(prev,curr,idx,arr){
        return prev+curr;
    })
}

3. map對數組中的每一個元素進行處理
map方法對數組中每一個元素都運行函數,返回由每次函數執行結果組成的數組。最終會返回一個新的數組。
修改數組中每個元素值→:
在這裏插入圖片描述
將數組轉化爲字符串→:
在這裏插入圖片描述
移除數組arr中的所有值與item相等的元素,不要直接修改數組arr,結果返回新數組

function remove(arr, item) {
    var newArr=[];
    arr.forEach(function(x){
        if(x!==item) 
           newArr.push(x)
    })      
    return newArr;
}

移除數組arr中的所有值與item相等的元素,直接在給定的arr數組上進行操作,並將結果返回:

function removeWithoutCopy(arr, item) {
    var n=arr.length;
     for(var i=0;i<n;i++){
         if(arr[0]!==item)   
             arr.push(arr[0]);
         arr.shift();     
    }
    return arr;
}

在這裏插入圖片描述
在數組arr末尾添加元素item,不直接修改數組arr,結果返回新的數組
slice(start,end) 方法可從已有的數組中返回選定從start-end的元素。

function append(arr, item) {
    var newArr=arr.slice();//淺拷貝數組
    newArr.push(item);
    return newArr;
}
function append(arr, item) {
    return arr.concat(item);
    //使用concat將傳入的數組或非數組值與原數組結合,組成一個新的數組返回
};

刪除數組arr最後一個元素,不要直接修改數組arr,結果返回新的數組

function truncate(arr) {
  return arr.slice(0,-1);
}
function truncate(arr) {
     var newArr=arr.concat();
     //var newArr=arr.slice();
     newArr.pop();
     return newArr;
}

合併數組arr1和arr2,不直接修改數組arr,結果返回新的數組
concat() 方法用於連接兩個或多個數組。

該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本。

function concat(arr1, arr2) {
    return arr1.concat(arr2);
}

在數組arr的index處添加元素item,不直接修改數組arr,結果返回新的數組
splice() 方法向/從數組中添加/刪除項目,然後返回被刪除的項目。
註釋:該方法會改變原始數組。

function insert(arr, item, index) {
    var newArr=arr.slice();
    newArr.splice(index, 0, item)
    return newArr
}

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

function duplicates(arr) {
    var newArr=[];
    for(var i=0;i<arr.length-1;i++){
        for(var j=i+1;j<arr.length;j++){
      arr[i]==arr[j] && newArr.indexOf(arr[i])==-1 && newArr.push(arr[i])
        }
    }
    return newArr
}

返回數字

function parse2Int(num) {
    return parseInt(num,10);
    //按10進制去處理字符串,碰到非數字字符,會將後面的全部無視
}

判斷是否爲空,或是不是、Number類型

if (num == 'null' || typeof (num) != 'number') {   }

將數組arr中的元素作爲調用函數fn的參數
調用函數可以使用call或者apply這兩個方法,區別在於call需要將傳遞給函數的參數明確寫出來,是多少參數就需要寫多少參數。而apply則將傳遞給函數的參數放入一個數組中,傳入參數數組即可。

 function argsAsArray(fn, arr) {
     return fn.apply(this, arr)
}

在JavaScript中,函數是一種對象,其上下文是可以變化的,對應的,函數內的this也是可以變化的,函數可以作爲一個對象的方法,也可以同時作爲另一個對象的方法,可以通過Function對象中的call或者apply方法來修改函數的上下文,函數中的this指針將被替換爲call或者apply的第一個參數。將函數 fn 的執行上下文改爲 obj 對象,只需要將obj作爲call或者apply的第一個參數傳入即可。

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