2017-02-03 6 views
0

誰かが間違っていることを教えてもらえますか?私はng-repeatの配列に変換しているJSONデータを持っています。配列を反復処理する前に、イベントの日付を今日の日付と比較し、既に渡されたイベントを継ぎ合わせます。しかし何らかの理由でスプライスが尊重されるのはdeleteCountだけです。角配列が正しくスプライスしていない(純粋なJS)

angular.forEach($scope.training, function(event, date) { 
     var d = event.endDate; 
     var evDate = d.toString(); 
     console.log(evDate); 
     var today = new Date(); 
     var dd = today.getDate(); 
     var mm = today.getMonth()+1; //January is 0! 
     var yyyy = today.getFullYear(); 
     if(dd<10) { 
      dd='0'+dd; 
     } 
     if(mm<10) { 
      mm='0'+mm; 
     } 
     today = mm+'/'+dd+'/'+yyyy; 
     console.log(today); 
     var d1 = Date.parse(evDate); 
     var d2 = Date.parse(today); 
     console.log(d1+','+d2); 
     if (d1 <= d2) { 
      $scope.training.splice(event,1); 
     } else { return false; } 
     }); 

とJSONのサンプル:

{"name": "Name","date": "Jan 18","location": "Houston, TX","endDate": "01/19/2016"} 
+0

スプライスの最初の引数は数値です。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice – sexta13

答えて

0

注:私は$scope.trainingは、配列ではなくオブジェクトであると仮定しています。

angular.forEachのイテレータコールバックのシグネチャは、iterator(value, key, obj)です。配列に適用すると、keyは配列内の項目のインデックスを保持します:angular.forEach documentation

これは、dateの代わりに2番目の引数indexを作成し、splice文でインデックスでスプライスするようにコードを更新できることを意味します。

angular.forEach($scope.training, function(event, index) { 
    var d = event.endDate; 
    var evDate = d.toString(); 
    console.log(evDate); 
    var today = new Date(); 
    var dd = today.getDate(); 
    var mm = today.getMonth()+1; //January is 0! 
    var yyyy = today.getFullYear(); 
    if(dd<10) { 
     dd='0'+dd; 
    } 
    if(mm<10) { 
     mm='0'+mm; 
    } 
    today = mm+'/'+dd+'/'+yyyy; 
    console.log(today); 
    var d1 = Date.parse(evDate); 
    var d2 = Date.parse(today); 
    console.log(d1+','+d2); 
    if (d1 <= d2) { 
     $scope.training.splice(index,1); 
    } else { return false; } 
}); 
+0

これは動作しません。私は実際に同様のアプローチを試みました。角度はあなたがオブジェクト配列(例えばevent。$ index)を通してオブジェクトインデックスにアクセスすることを可能にしますが、それもこのアプローチでも出力を変更することはできません。ところで、あなたは正しいです:配列の1つのオブジェクトを表示していたのは、endDate属性を除いてすべて同じですからです。 –

関連する問題