2016-08-01 11 views
2

Müssen Winkel JS schieben JSON-Objekt und müssen vor, wenn der Wert für eine des Objekts überprüfen existieren muss ich die Daten zu überschreiben,Wie schieben JSON-Objekt zu Array in AngularJS

$scope.setData = function(survey, choice) { 

    keepAllData.push({ 
    'surveyId': survey.id, 
    'choiceId': choice.id 
    }); 
    console.log(keepAllData); 
    toArray(keepAllData); 
    alert(JSON.stringify(toArray(keepAllData))); 

    $scope.keepAllDatas.push({ 
    'surveyId': survey.id, 
    'choiceId': choice.id 
    }); 
    var items = ($filter('filter')(keepAllDatas, { 
    surveyId: survey.id 
    })); 

} 

function toArray(obj) { 
    var result = []; 
    for (var prop in obj) { 
    var value = obj[prop]; 
    console.log(prop); 
    if (typeof value === 'object') { 
     result.push(toArray(value)); 

     console.log(result); 
    } else { 
     result.push(value); 
     console.log(result); 
    } 
    } 
    return result; 
} 

Wenn die Umfrage-ID existieren in Keepalldata müssen den letzten Wert mit ChoiceID ändern. Bitte lassen Sie mich wissen, ist es möglich, mit eckigen JS

+0

Kontrolle dieses http://stackoverflow.com/questions/14489860/[javascript-object-pushed-into-an-array] –

Antwort

1

Versuchen Sie es mit: Bevor Sie Daten pushen müssen Sie überprüfen, ob die Umfrage ID existiert oder nicht, wenn es vorhanden ist, müssen Sie Wahl mit entsprechenden Umfrage-ID aktualisieren, sonst kannst du direkt drücken.

$scope.setData = function(survey, choice) { 
    var item = $filter('filter')(keepAllData, { 
    surveyId: survey.id 
    }); 
    if (!item.length) { 
    keepAllData.push({ 
     'surveyId': survey.id, 
     'choiceId': choice.id 
    }); 
    } else { 
    item[0].choiceId = choice.id; 
    } 
    console.log(keepAllData); 
} 

DEMO

+0

Dank Balachandran, ich habe ein paar modifizierte um die Daten zu entfernen, wenn sie auch existieren. – user3428736

+0

Ich habe keine .do möchten Sie aktualisieren oder entfernen, wenn Umfrage-ID existiert? – Balachandran

+0

Ich möchte nur die Choice-ID für eine vorhandene Umfrage id aktualisieren – user3428736

0
$scope.keepAllDatas = []; 
$scope.setData = function(survey,choice) { 

      if($scope.keepAllDatas.length == 0) { 
      $scope.keepAllDatas.push({'surveyId':survey.id,'choiceId':choice.id}); 
      } 
      else{ 
      var items = ($filter('filter')($scope.keepAllDatas, {surveyId: survey.id })); 
      for (var i = items.length - 1; i >= 0; i--) { 
       // alert(items[i].surveyId); 
       if(items[i].surveyId == survey.id) { 
       console.log($scope.keepAllDatas.indexOf(survey.id)); 
        $scope.keepAllDatas.splice($scope.keepAllDatas.indexOf(survey.id),1); 
        console.log("Removed data") 
       } 
      } 
      $scope.keepAllDatas.push({'surveyId':survey.id,'choiceId':choice.id}); 
      console.log($scope.keepAllDatas) 
      // alert(items[0].surveyId); 
      } 

     } 
Verwandte Themen