前端javascript:经典编程“移除数组中的元素”

170 阅读1分钟

题目来源:牛客网

题目描述
移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
示例1
输入
[1, 2, 3, 4, 2], 2
输出
[1, 3, 4]
  • 解题思路1:使用arrayObject.filter(val=>{});利用数组的过滤器,返回新的数组;

      function remove(arr, val) {
          return arr.filter(item=>{
              return val!==item
          })
      }
    
  • 解题思路2:定义一个新的数组tempArr,将原数组进行遍历,将所有非item的元素push进去;

          function remove(arr, item) {
            let tempArr=[];
              for(let val of arr){
                  if(val!==item){
                      tempArr.push(val);
                  }
              }
              return tempArr;
      }
    

    题目来源:牛客网

      题目描述
      移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
      示例1
      输入
      复制
      [1, 2, 2, 3, 4, 2, 2], 2
      输出
      复制
      [1, 3, 4]
    
  • 解题思路1:使用Array.splice(index,howmany,items...);直接修改原数组;for循环遍历时需要i--,重新定义新数组的下标;

          function removeWithoutCopy(arr, item) {
          
          for(let i=0;i<arr.length;i++){
              if(arr[i]==item){
                  arr.splice(i,1);
                  //重新定义新数组的下标;
                  i--;
              }
          }
         return arr
       }