2016-09-20 17 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があるので、両方を表示する必要があります。親と子の間には関係はありません。 2つの連続する要素がdisabled = trueの場合、両方を削除したいと考えています。 doesnの

2親(ABCとLMN); tは子供が

答えて

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

は_です.filter – user1015388

+0

の代わりに.rejectを使用すると、同じことをフィルタで実現できます。私はそれが私にもっと意味をなさないので、拒否を使用しました。私はうまくなり、フィルタを使ってサンプルをあなたに更新します:) –

+0

今では同じことをしていますが、代わりにフィルタを使用しています。 –

関連する問題