数组--移除数组中指定的元素,不改变原数组和改变原数组

强烈推荐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
  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
  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.  

 

你可能感兴趣的:(NKW---JS能力经典测评题)