我开始学习angularjs(我是初学者,所以请客气)。
我正在制作一个民意调查应用程序,并且我正在使用angular来做到这一点
我有一个名为items
的数组范围,它包含将添加到民意测验中的所有项目。
$scope.items = []
我正在制作一个错误处理脚本,该脚本将通知用户是否特定的轮询项目已经在
items
数组中,并且我无法直接在数组中执行indexOf
方法来搜索某个项目是否已经存在,因为我的代码会直接将数字添加到数组中,例如1. item1
,2. item2
,3. 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/