陣列--移除陣列中指定的元素,不改變原陣列和改變原陣列

祥哥的說發表於2018-06-10

強烈推薦30個原生JavaScript的demo,包括canvas時鐘特效、自定義視訊播放器、搜尋欄快速匹配、fetch訪問資源、console除錯技巧等,鞏固基礎和麵試的寶貴資料,先fork後學習,詳見點選開啟連結,歡迎點贊~~~謝謝,共同進步學習!

題目描述

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

示例1

輸入

複製

[1, 2, 2, 3, 4, 2, 2], 2

輸出

複製

[1, 3, 4]

解法:

 

一.不直接修改陣列

題目描述

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

輸入例子:

remove([1, 2, 3, 4, 2], 2)

 

輸出例子:

[1, 3, 4]

方法1

[javascript] view plain copy

  1. function remove(arr, item) {  
  2.  var result=[];  
  3.     for(var i=0; i<arr.length; i++){  
  4.     if(arr[i]!=item){  
  5.         result.push(arr[i]);  
  6.     }  
  7. }  
  8.  return result;  
  9. }  

方法2

[javascript] view plain copy

  1. function remove(arr, item) {  
  2.  var result=[];  
  3.     arr.forEach(function(element){  
  4.         if(element!=item){  
  5.             result.push(element);  
  6.         }  
  7.     });  
  8.  return result;  
  9. }  

 

forEach的用法可參考:

 

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

方法3

function removeWithoutCopy(arr, item) {  
    return arr.filter(function(ele){  
        return ele!=item;  
    })  
}  

二.直接修改陣列

題目描述

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

輸入例子:

removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)

 

輸出例子:

[1, 3, 4]

方法1:

[javascript] view plain copy

  1. function removeWithoutCopy(arr, item) {  
  2.      for(var i = 0; i < arr.length; i++){  
  3.          if(arr[i] == item){  
  4.              //splice方法會改變陣列長度,當減掉一個元素後,後面的元素都會前移,因此需要相應減少i的值  
  5.              arr.splice(i,1);  
  6.              i--;  
  7.          }  
  8.      }  
  9.      return arr;  
  10.  }  

[javascript] view plain copy

  1. function removeWithoutCopy(arr, item) {  
  2.     for(var i=0; i<arr.length;){  
  3.         if(item==arr[i]){  
  4.             arr.splice(i,1);  
  5.         }else {  
  6.             i++;  
  7.         }     
  8.     }  
  9. return arr;  
  10. }  

方法2:

[javascript] view plain copy

  1. function removeWithoutCopy(arr, item) {  
  2.     for(var i=arr.length-1;i>=0;i--)  
  3.       {  
  4.        if(arr[i]==item)  
  5.          {  
  6.            arr.splice(i,1);  
  7.           }  
  8.        }  
  9.     return arr;  
  10. }  
  11. 倒著檢測;不用考慮位置影響  
  12.  

 

相關文章