3 移除数组arr中所有与item相等的元素,不更改原数组。

方法一:filter ES5方法
var a=[1,5,'ff','g','h','sd'];
alert(remove(a,'g'));         

function  remove(arr,item){
    return   arr.filter(function(ele){return ele !=item})
}
方法二:push
function  remove(arr,item){
    var arr2=[];
    for (var i=0;i<arr.length ;i++)
    {
        if (arr[i] !=item)
            {
            arr2.push(arr[i]);
           }
    }
    return arr2;
}
方法三:splice

此方法的牛逼之处在于倒着删除相等的元素item,避免了正着删除时后面元素前移的问题;

function  remove(arr,item){
  var newarr=arr.slice(0);
  for (var i=newarr.length;i>=0 ;i-- )
  {

      if (newarr[i]==item)
      {

          newarr.splice(i,1);                   
      }
  }
  return  newarr;
}
方法四:利用数组本身的特性,将数组看作队列,使用push和shift方法来操作;
function remove(arr,item){
  var newarr=arr.slice(0); 
  for (var i=0;i<newarr.length+1;i++) //注意此处的i<newarr.length+1;
    {

    if (newarr[0]!==item)
      {
        newarr.push(newarr[0]);
        newarr.shift();
      }
    else{
        newarr.shift();
       }
    }
  return newarr;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值