2016-09-20 71 views
1

我正在使用lodash _.filter函數。在過濾時,如果與相繼的元素相同,我想刪除元素。在此代碼,顯示lodash過濾器和排除值

下面是這種情況,

fObj=[1,2,3] 
template=[{"v":1,"d":"ABC","disabled":true},{"v":2,"d":"xyz","disabled":true},{"v":3,"d":"PQR","disabled":false},{"v":4,"d":"lmn","disabled":true}] 
arr = _.filter(template, function (item) 
{ 
    return item.disabled === true || fObj.indexOf(item.vm) !== -1; 
}); 

這是一種父子的,假設ABC,XYZ是父母。沒有孩子的父母必須被移除。 由於XYZ有一個孩子PQR,我應該同時顯示。父母和孩子之間沒有任何關係。 我們必須假設,當兩個連續的元素被禁用= true時,我想刪除這兩個元素。

2父母(ABC和LMN),它沒有按;噸有孩子應該被刪除

回答

0

我做了一個例子,你

var arr = _.filter(template, function (item, index) 
{ 
    if(item.needToBeRemoved) { 
     return false; 
    } else { 
     var isNotTheLastElement = index < (template.length - 1); 
     if(isNotTheLastElement) { 
      var nextItem = template[index+1]; 
      if(item.disabled && nextItem.disabled) { 
       nextItem.needToBeRemoved = true; 
       return false 
      } 
     } 
    } 
    return true; 
}); 

這裏是jsFiddle

+0

你要我用_ .reject而不是_.filter – user1015388

+0

您可以使用過濾器實現同樣的功能。我只是使用拒絕,因爲它對我更有意義。我會很好,並更新與篩選器的例子:) –

+0

現在你有同樣的事情,但使用過濾器,而不是。 –