移除陣列 arr 中的所有值與 item 相等的元素。不要直接修改陣列 arr,結果返回新的陣列

大夢放覺醒發表於2018-07-20

思路:不修改原陣列的話就新建陣列,賦值,這裡要注意不能直接賦值,var a=arr因為這樣只是將陣列地址給了a,對a進行操作的話還是會改變原陣列。然後對新陣列判斷相等進行刪除操作之後要注意讓元素自減。

1:splice

這裡利用slice方法獲取原陣列,也可以用concat()來獲取,效果一樣

function remove(arr,item) {
    var a=arr.slice(0);
    for(var i=0;i<arr.length;i++){
      if(a[i]==item){
        a.splice(i,1);
        i--;
      }
    }
    return a;
};
var b=new Array(4,2,5,6,7,1,2,2,5,4,8,9);
document.write(remove(b,2));

結果為:

2:Push

跟splice大同小異。

3:Arra y.prototype.filter()

filter() 方法使用指定的函式測試所有元素,並建立一個包含所有通過測試的元素的新陣列。返回true是表示保留該元素(通過測試,該元素保留至新陣列),false時表示移除該元素

function remove(arr,item) {
 return arr.filter(function(ele){
  return ele!=item;
 });
}
var b=new Array(4,2,5,6,7,1,2,2,5,4,8,9);
document.write(remove(b,2));
    

相關文章