1

我正在将数据发送到我的 php 脚本。数据看起来像在此处输入图像描述

控制器:

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...

?

4

4 回答 4

2

检查查找方法

var flag = data.values.find(function(element){
     return element.val != ''
})

if(flag)$http...
于 2017-06-20T12:55:28.213 回答
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)
{

}

于 2017-06-20T12:57:55.007 回答
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);
}

于 2017-06-20T12:52:09.467 回答
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 != ""));

在此处输入图像描述

于 2017-06-20T12:55:39.430 回答