2016-12-06 10 views
0

こんにちはみんな私は実際に情報を配列に変換し、them.Imをチェックした後にチェックusermetaでこのポストを持っているかどうかを確認します。この文字列を配列に変換する前に。しかし、それはなぜ動作しませんか?角度配列の値を確認してください

$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は配列であり、check_likesを比較しています!idこれをもう一度確認してください。代わりにcheck_likes.indexOf(id)> = 0を使用してください。 –

+1

あなたは正規表現を使用することができます – webduvet

答えて

3

問題は声明

if(check_likes != id) 
ここ check_likes

配列は、このように、それは私はあなたが番号の配列を作成する必要があると思うid

に等しくなることはありませんであることにあります。

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

あなたはidが配列内に存在するかどうかを確認する.indexOf()を使用することができ、それが存在しない場合、所与の素子がアレイ状に見つかった、または-1可能な最初のインデックスを返します。

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

ありがとうございます!それは本当にエレガントな方法です) –

0

あなたのidパラメータなどのプリミティブデータ型にタイプArrayのオブジェクトを比較することはできません。

そうのようなループ内のコードをラップしてみてください。

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

このコードを試してください:あなたは2つの文字列の配列を持っている、とあなたはあなたのことを確認してくださいlikes文字列を分割した後

$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'); 
     } 
    }) 
} 

をid paramは、その配列内にリクエストを実行するためのものではありません。 !=は機能しません

関連する問題