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

我正在制作一个民意调查应用程序,并且我正在使用angular来做到这一点

我有一个名为items的数组范围,它包含将添加到民意测验中的所有项目。

$scope.items = []


我正在制作一个错误处理脚本,该脚本将通知用户是否特定的轮询项目已经在items数组中,并且我无法直接在数组中执行indexOf方法来搜索某个项目是否已经存在,因为我的代码会直接将数字添加到数组中,例如1. item12. item23. item3,所以我想搜索items []中的所有索引,并在索引内执行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')
    }


但是它总是返回“ true”(即使我的items数组为空)。我不知道我在做什么错。请帮忙。

感谢您能为我提供帮助的任何人。

最佳答案

当通过var findItem = function() {...}定义函数时,必须通过findItem()调用它,否则它将不会执行,并且由于findItem不为null,因此!findItem始终为false,因为被javascript识别为findItem

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

请参阅下面的代码段。



var items = [];
var toBeAdded = {
  test: 'test'
};
var findItem = function() {
  for (var i = 0; i < items.length - 1; i++) {
    if (items[i].indexOf(toBeAdded) >= 0) {
      return true
    } else {
      return false
    }
  }
}

if (!findItem()) {
  items.push(toBeAdded);
} else {
  alert('item already exists');
}
console.log(items);

关于javascript - 在数组范围内的每个索引内搜索特定字符串(angularjs),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43815918/

10-13 21:37
查看更多