1. 程式人生 > >js陣列如何遍歷一次,刪除部分元素

js陣列如何遍歷一次,刪除部分元素

經常做後臺取資料,渲染到頁面工作的前端童鞋可能都碰到過這種需求:那就是如果後臺傳給前端的資料要二次處理,一個數組,其中具有某種共同特徵的元素是我們不需要的,必須要把它刪除掉,這時候怎麼做呢。

常見的思路是:先用map方法遍歷一次,或其它方法遍歷,總之是把要去掉的元素改成undefined,然後再遍歷新陣列,把undefined的元素去掉。總之就是非常麻煩。
那麼有沒有遍歷一次就可以把沒用的元素去掉的辦法呢?
有的,如下:


var arr = [
{
    status:0
},{
    status:1
},{
    status:0
},{
    status:0
},{
    status
:0 },{ status:3 },{ status:0 },{ status:7 },{ status:0 },{ status:2 }]; console.log(arr); for(var i=0,flag=true,len=arr.length;i<len;flag ? i++ : i){ if( arr[i]&&arr[i].status==0 ){ arr.splice(i,1); flag = false; } else
{ flag = true; } } console.log(arr);

只需要一個簡單的for迴圈就搞定啦。

我在for迴圈裡設了個 flag 標誌,並在後面的 i++ 位置做了判斷,flag為true則加,為false則不變。
這樣就可以解決,splice方法刪掉一個元素後,後面緊鄰的元素不會被遍歷到的問題。
特別注意,for迴圈裡面的 if 要先判斷一下 arr[i] 的存在與否。

原文連結:https://segmentfault.com/a/1190000006115447