2016-12-06 5 views
0

Hallo Leute, ich kann nicht finden Sie tatsächlich Informationen über Zeichenfolge in Array konvertieren und nach check sie.Im versuchen, überprüfen Sie diesen Beitrag in usermeta oder nicht. Bevor Sie diese Zeichenfolge in Array konvertieren. Aber es funktioniert nicht warum?Überprüfen Sie den Wert in angular array

$scope.like = function(id) { 
    PostService.GetUserMeta(user).then(function(data) { 
     var likes = '290 270' 
     var check_likes = likes.split(" "); 
     if (check_likes != id) { 
      $http.jsonp('http://somesite.com/api/userplus/update_user_meta_vars/', { 
       params: { 
        like_post: id + ',' + likes, 
        callback: "JSON_CALLBACK" 
       } 
      }).success(function(data) { 
       console.log('Id added to array'); 
      }); 
     } else { 
      console.log('ID already in array'); 
     } 
    }) 
} 
+1

check_likes ist ein Array und Sie vergleichen check_likes! = Id bitte überprüfen Sie dies erneut. Verwenden Sie stattdessen check_likes.indexOf (id)> = 0 für die Überprüfung. –

+1

können Sie Regex, – webduvet

Antwort

3

Das Problem liegt in der Aussage

if(check_likes != id) 

Hier check_likes ist ein Array so wird es nie zu id

gleich sein Ich glaube, Sie müssen eine Reihe Array erstellen.

var check_likes = likes.split(" ").map(Number); 

Dann können Sie .indexOf() verwenden um zu überprüfen, ob id in einem Array vorhanden ist, gibt es den ersten Index, an dem ein bestimmtes Element in dem Array gefunden werden, oder -1, wenn es nicht vorhanden ist.

if (check_likes.indexOf(id) == -1){ 
    $http.jsonp(.....) 
}else{ 
    console.log('ID already in array'); 
} 
+0

Vielen Dank! Diese wirklich elegante Art) –

0

Sie können nicht ein Objekt vom Typ Array zu einem primitiven Datentyp wie Ihre id Parameter vergleichen.

Versuchen Sie Ihren Code in einer Schleife Umwickeln wie so:

for(i = 0; i < check_likes.length; i++){ 
    if (check_likes[i] != id) { 
      $http.jsonp('http://somesite.com/api/userplus/update_user_meta_vars/', { 
      params: { 
       like_post: id + ',' + likes, 
       callback: "JSON_CALLBACK" 
      } 
     }).success(function(data) { 
      console.log('Id added to array'); 
     }); 
    } else { 
     console.log('ID already in array'); 
    } 
} 
0

diesen Code Versuchen:

$scope.like = function(id) { 
    PostService.GetUserMeta(user).then(function(data) { 
     var likes = '290 270' 
     var check_likes = likes.split(" "); 
     if (check_likes.indexOf(id) == -1) { 
      $http.jsonp('http://somesite.com/api/userplus/update_user_meta_vars/', { 
       params: { 
        like_post: id + ',' + likes, 
        callback: "JSON_CALLBACK" 
       } 
      }).success(function(data) { 
       console.log('Id added to array'); 
      }); 
     } else { 
      console.log('ID already in array'); 
     } 
    }) 
} 

Nach der Trennung likes Zeichenfolge Sie ein Array von 2 Strings haben, und Sie sollten überprüfen, ob Ihre ID-Parameter ist nicht in diesem Array, um Ihre Anfrage auszuführen. Die != würde nicht funktionieren

Verwandte Themen