来自牛客网的js编程题

1、移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组 

 1 function remove(arr, item) {
 2     if(!Array.isArray(arr)) return -1;
 3     for(var i=0;i<arr.length;i++){
 4         if(arr[i]==item){
 5             arr.splice(i,1);
 6             i--;   //这里是因为用splice删除一个元素之后,下一个元素替换当前元素的位置
 7         }        
 8     }
 9     return arr;
10 }

上面代码测试通过率66.67%,主要原因是改变了原始的数组。

 

修改成如下,亲测通过率100%

function remove(arr, item) {
    if(!Array.isArray(arr)) return -1;
    var a=new Array();
    for(var i=0;i<arr.length;i++){
        if(arr[i]!=item){
            a.push(arr[i]);         
        }        
    }
    return a;
}

这里相当于两种思路来解决问题, 一种是正推,另一种是反推, 类似数学中计算概率问题的思路。

 

相关文章:

  • 2021-12-21
  • 2017-12-15
  • 2018-06-17
  • 2021-06-07
  • 2019-12-18
  • 2021-12-05
  • 2021-06-30
  • 2021-11-12
猜你喜欢
  • 2022-01-04
  • 2021-05-25
  • 2021-12-20
  • 2021-06-01
  • 2021-07-31
  • 2021-07-27
  • 2018-05-01
相关资源
相似解决方案