搜索数组范围(angularjs)中每个索引内的特定字符串

时间:2017-05-06 01:56:59

标签: javascript angularjs

我开始学习angularjs(我是初学者,所以请善待)。

我正在制作民意调查应用,而且我使用角色来执行此操作

我有一个名为items的数组范围,其中包含将添加到投票中的所有项目。

$scope.items = []

我正在制作一个错误处理脚本,该脚本会告知用户特定的投票项目是否已经在items数组中而我无法直接在数组中执行indexOf方法来搜索如果一个项目已经存在,因为我的代码会直接将数字添加到数组中,如1. item12. item23. item3所以我想搜索项目[]中的所有索引并执行索引中的indexOf方法,以查看项目是否已存在。

我有这个代码,如果一个项目已经存在于数组中,那么它应该返回true,否则将返回false

    //number of items in the array
    var itemNum = $scope.items.length + 1;
    //the item which the user entered
    var toBeAdded = $scope.pollItem;

    //try to search the items[] array if an item already exists
    var findItem = function (){
        for (var i = 0; i < itemNum-1; i++) {
            if ($scope.items[i].indexOf(toBeAdded) >= 0) {
                return true
            }else{
                return false
            }
        }
    }

    //add the item into the poll if findItem() function returns false
    if (!findItem) {
        $scope.items.push(itemNum.toString() + " " + toBeAdded);
        $scope.pollItem = "";
        focus('pollItem');
    }else{
        alert('item already exists')
    }

但它总是返回&#34; true&#34; (即使我的items数组为空)。我不知道自己做错了什么。请帮忙。

感谢任何可以帮助我的人。

1 个答案:

答案 0 :(得分:1)

当你通过var findItem = function() {...}定义一个函数时,你必须通过findItem()调用它,否则它将不被执行,因为findItem不是null,那么{{1始终为!findItem,因为false被javascript识别为findItem

所以将variable更改为if (!findItem)将解决您的问题。

请参阅下面的代码段。

if (!findItem())