Javascript 在数组范围内的每个索引内搜索特定字符串(angularjs)
我开始学习angularjs(我是个初学者,所以请善待我) 我正在制作一个民意测验应用程序,我正在使用angular来做这个 我有一个名为Javascript 在数组范围内的每个索引内搜索特定字符串(angularjs),javascript,angularjs,Javascript,Angularjs,我开始学习angularjs(我是个初学者,所以请善待我) 我正在制作一个民意测验应用程序,我正在使用angular来做这个 我有一个名为items的数组范围,它包含将添加到轮询的所有项 $scope.items = [] 我正在制作一个错误处理脚本,该脚本将通知用户某个特定的投票项目是否已经在项目数组中,并且我无法在数组中直接执行indexOf方法来搜索某个项目是否已经存在,因为我的代码将直接向数组中添加数字,如1。项目1,2。第2项、第3项。item3因此我想搜索items[]中的所有索引
items
的数组范围,它包含将添加到轮询的所有项
$scope.items = []
我正在制作一个错误处理脚本,该脚本将通知用户某个特定的投票项目是否已经在项目
数组中,并且我无法在数组中直接执行indexOf
方法来搜索某个项目是否已经存在,因为我的代码将直接向数组中添加数字,如1。项目1
,2。第2项、第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')
}
//数组中的项数
var itemNum=$scope.items.length+1;
//用户输入的项目
var tobeaded=$scope.pollItem;
//如果项已存在,请尝试搜索items[]数组
var findItem=函数(){
对于(var i=0;i=0){
返回真值
}否则{
返回错误
}
}
}
//如果findItem()函数返回false,则将该项添加到轮询中
如果(!findItem){
$scope.items.push(itemNum.toString()+“”+tobedded);
$scope.pollItem=“”;
焦点(“项目”);
}否则{
警报('项目已存在')
}
但它总是返回“true”(即使我的items数组为空)。我不知道我做错了什么。请帮忙
感谢所有能帮助我的人。当您通过
var findItem=function(){…}
定义函数时,必须通过findItem()
调用它,否则它将不会被执行,因为findItem
不是空的,所以!findItem
将始终为false
,因为javascript将findItem
识别为变量
因此,将if(!findItem)
更改为if(!findItem())
将解决您的问题
请参阅下面的代码片段
var项目=[];
var Tobeaded={
测试:“测试”
};
var findItem=函数(){
对于(变量i=0;i=0){
返回真值
}否则{
返回错误
}
}
}
如果(!findItem()){
物品。推送(带头);
}否则{
警报(“项目已存在”);
}
控制台日志(项目)代码>我觉得错过了这一点很愚蠢。顺便说一下,非常感谢你的回答!是的,当然!再次感谢!