检查角度数组中的值

时间:2016-12-06 11:59:22

标签: javascript angularjs arrays

大家好我无法找到关于将字符串转换为数组的实际信息,并在检查后。我正在尝试检查是否在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');
        }
    })
}

3 个答案:

答案 0 :(得分:3)

问题在于声明

if(check_likes != id)

此处check_likes是一个数组,因此永远不会等于id

我认为你需要创建一个数字数组。

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

然后你可以使用.indexOf()来检查数组中是否存在id,它返回可以在数组中找到给定元素的第一个索引,或-1如果它不存在。

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

答案 1 :(得分:0)

您无法将类型为Array的对象与基本数据类型(如id参数)进行比较。

尝试将代码包装在循环中,如下所示:

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

答案 2 :(得分:0)

试试这段代码:

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

分割likes字符串后,你有一个包含2个字符串的数组,你应该检查你的id参数不在那个数组中来执行你的请求。 !=不起作用