您的位置:首页 > 其它

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

2017-11-17 18:12 232 查看

方法一: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方法来操作;

<
4000
code class=" hljs javascript">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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐