2016-03-24 21 views
1

問題は、同じIDを持つ複数のオブジェクトがあることです。あなたが同じIDを持つすべてのアイテムを削除することになると、これが動作することがわかります。彼らは同じIDである場合にはどうすればオブジェクトを一つずつに関係なく削除することができます...おかげ同じIDを持つ配列からアイテムを1つずつ削除します

individualObjects:[], 
actions:{ 
    increment:function(){ 
     var obj = this.get('object'); 
     this.get('individualObjects').pushObject(obj); 
    }, 
    decrement:function(){ 
     var obj = this.get('object'); 
     var filter = this.get('individualObjects').findBy('obj_id', obj.get('obj_id')); 
     this.get('individualObjects').removeObject(filter); 
    } 
} 
+0

ための長さは 'ember.js'解決のための必要条件である取得?質問に元のアレイと予想される結果を含めることはできますか? – guest271314

+1

なぜ 'filter'ですか? –

+0

私の問題は、いくつかのオブジェクトが同じIDを持っていることです。 filterByを使用すると、同じIDを持つすべての項目が削除されます。私が欲しいのは、id = –

答えて

1

さてあなたは「individualObjects」に属していないアイテムを見つけるためにArray.filterを使用する必要があると後で単に「removeObjects」を使用して

decrement:function(){ 
      var objects = this.get('individualObjects') 
      var notWanted = objects.filterBy('obj_id', this.get('object.obj_id')); 
      this.get('individualObjects').removeObjects(notWanted); 
} 
それらを除去するであろう配列をフィルタリングします

および溶液2

decrement:function(){ 
     var removeObj = this.get('object'); 
     var objects = this.get('individualObjects') 
     // As the condition is true given object is returned 
     var notWanted = objects.filter(obj => { return obj.get('obj_id') === removeObj.get('obj_id')  }); 
     this.get('individualObjects').removeObjects(notWanted); 
} 

[OK]をクリックして項目を1つずつ削除します。奇妙なしかし、達成することができ

最初の今

var notWantedCount = objects.filterBy('obj_id', this.get('object.obj_id')).length; 

for(var i=0; i <= notWantedCount; i++) { 
    var toRemove = individualObjects.findBy('obj_id', obj.get('obj_id')); 
    individualObjects.removeObject(toRemove); 
    // Make some custom actions one by one. 
} 
+0

ありがとうございますが、同じidであってもremoveObjectが必要です。 –

+0

@JosephCC ok答えを更新しました。 –

+0

助けてくれてありがとう –

1

その後、私は残り火を知りませんが、アレイ上のforeachをしたいだろう、とそれぞれのIDをテストします。

decrement:function(){ 
    var obj = this.get('object'); 
    self = this; 
    this.get('individualObjects').each(function(individualObject) { 
    if (individualObject.get('obj_id') == obj.get('obj_id')) 

     ... you want to do something here? ... 

     self.get('individualObjects').removeObject(individualObject); 
    } 
} 

こうすれば、各オブジェクトを個別に削除することができます。削除前または削除後に必要なコードを実行する。まずソートする場合は、各関数を実行する前にソートすることができます。

+0

と同じであっても、その時点で1つのオブジェクトを削除できるようにすることです。オブジェクトの一部が同じIDを持つので、これは私のケースでは機能しません。彼らが同じIDを持っていても、私は一つ一つ削除したいと思っています...どうもありがとうございます。 –

関連する問題