控制器:
app.controller('searchCtrl', function($scope,$rootScope,$http,$q){
$scope.search = function( values , type) {
if($scope.abort) {
$scope.abort.resolve();
}
$scope.abort = $q.defer();
var data={};
data.values=values;
data.type=type;
$http.post("search.php", data,{timeout:$scope.abort.promise}).then(function success (response) {
$rootScope.search_result=response.data;
},function error (response){
console.log("Request cancelled");
}
);
};
});
但我想检查列表中是否有一个数组项具有属性val!=“”;除了像
这样的循环之外,还有什么方法可以检查它吗?var flag=0;
for(var i=0; i<values.length; i++){
if(values[i].val!="") flag=1;
}
if(flag)$http...
答案 0 :(得分:2)
检查find方法
var flag = data.values.find(function(element){
return element.val != ''
})
if(flag)$http...
答案 1 :(得分:1)
您的values
数组似乎在一个对象中。因此,您应该使用yourObjName.values
来访问它。
这是一个演示:
var myData = {
type: 'find_company',
values: [
{name: 'Rob', val: ''},
{name: 'Jon', val: '1'},
{name: 'Aria', val: ''},
{name: 'Ned', val: '2'},
]
};
var flag = 0;
for(var i = 0; i < myData.values.length; i++) {
if(myData.values[i].val != "") flag++;
}
if(flag) {
/* $http.post */
console.log('flag is:', flag);
}
&#13;
答案 2 :(得分:1)
你可以试试这个:
var array = [{val:"",name:"lucas"},{val:"12",name:"jaque"},{val:"12",name:"celine"},{val:"sdfsdf",name:"bruno"},{val:"",name:"ugo"},{val:"",name:"json"}]
console.log(array.filter(x => x.val != ""));
答案 3 :(得分:1)
如果在第一次匹配
时退出循环,你可以加快一点
var flag = false;
for(var i = 0; i < myData.values.length; i++) {
if(myData.values[i].val != ""){
flag=true;
i = myData.values.length;
}
}
if(flag)
{
}
&#13;