有时,我们会有这样一个需求,当我们从后端取到一个list数组时,我们需要进行二次处理,处理成我们需要的数据,如:
1 | var arr = [ |
遍历上面的数组,删除status=0的项,我们很容易想到,先for循环(或forEach、map等)遍历,然后使用array的splice方法删除指定索引未知的项。
但在操作之后,我们发现,当我们删除一个之后索引值会变化,这就造成只能删除第一个。我们发现,for循环遍历时,遍历一次,i加1,那我们可以这样当执行splice删除的时候,我们不让i+1,否则才递增。该如何实现呢?
1 | for(var i=0, flag=true, len=arr.length; i<len; flag ? i++ : i){ |
这种做法效率非常高,值得推荐。