json数据验证,使用angular Js和javascript进行输入值验证

json data validation with input values using angular Js and javascript

本文关键字:验证 javascript 输入 Js 数据 使用 angular json      更新时间:2023-09-26

我在angular JS项目中的一个文件(/static/models.json)中得到了json数据。。

{
    "familyType": {
        "A650": [{
            "partID": "2630_H"
        }, {
            "partID": "2690_H"
        }, {
            "partID": "2680_H"
        }, {
            "partID": "2600_H"
        }, {
            "partID": "2620_H"
        }, {
            "partID": "2610_H"
        }],
        "S400": [{
                "partID": "S500_Aru"
            }, {
                "partID": "S600_Aru"
            }, {
                "partID": "S700_Aru"
            }, {
                "partID": "S800_Aru"
            }, {
                "partID": "S900_Aru"
            }, {
                "partID": "S100_Aru"
            }
        ]
    }
}

我得到了下面的函数,其中的参数传入该方法(Part_id1,Part_id2)和函数内部。。我有两个族类型(A650,S400),我需要检查两个输入的part_Id(part_id1,part_id2)是否属于同一族(即A650S400

如果两个part_id(part_id1,part_id2)来自不同的族类型,我需要提醒用户。。。我们如何遍历json文件并比较两种族类型中的part_ID。。

$scope.ValidateModelList = function(Part_id1, Part_id2, $http) {
     if ($scope.firTable.selectedRowsCount != 0) {
         $http.get("/static/models.json")
             .success(function(response) {
                 $scope.names = response;
             });
         // here i am storing json data in $scope.names object
         //  here i need to check that the part_ids with the family
     }
 }

有谁能帮我做这件事吗?我会非常感激…

非常感谢。。。。

更新

function ValidateModel(partIDlist){
             alert('2');
             var data = stubdata; // Stubdata is actual json data mentioned above
             var partIdResult = [];
             for (var key in data.familyType) {
                 angular.forEach(data.familyType[key], function (object) {
                     angular.forEach(partIDlist, function (partId) {
                         if (partId == object.partID) {
                             partIdResult.push({
                                 value: partId, family: key
                             });
                         }
                     });
                 });
             }
             for (var i = 0; i < partIdResult.length; i++) {
                // alert(partIdResult.length);
                //alert(partIdResult.family);
                alert(JSON.stringify(partIdResult))
                alert(partIdResult.family); // this is giving undefined value
             alert(partIdResult[0].family);
                 if (partIdResult.family === partIdResult[0].family){
                     alert('yes');
                     alert("part_id's are same");
                 }
                 else if (partIdResult.family !== partIdResult[0].family) {
                     alert("part_id's not same");
                 }
             }
         }

我在这儿递一张这样的单子。。

var partIDlist=["S900_Aru","S500_Aru","2610_H"]

我收到警报(JSON.stringfy(partIdResult))partIdResult,就像这个一样

 [{"value":"S900_Aru","family":"S400"},
 {"value":"S500_Aru","family":"S400"},
 {"value":"2610_H","family":"A650"}]

我应该知道这三个part_id不属于同一个型号。。相反,我得到的part_id属于同一

你能帮忙吗。。。非常感谢。。。。

不赞成使用First successs。请改用。then。第二个数据存储在response.data下。

.then(function(response) {
     var data = response.data;
     var partId2Family = null, partId1Family = null;
     for(var key in data.familyType){
         angular.forEach(data.familyType[key], function(object){
              if(Part_id1 == object.partID){
                  partId1Family = key;
              }
              if(Part_id2 == object.partID){
                  partId2Family = key;
              }
         })
     }     
     if(partId1Family !== PartId2Family){
          // warning
     }         
}

这应该奏效。

编辑:阵列版本

.then(function(response) {
     var data = response.data;
    var partIdResult = [];
     for(var key in data.familyType){
         angular.forEach(data.familyType[key], function(object){
              angular.forEach(partIds, function(partId){
                   if(partId == object.partID){
                        partIdResult.push({value:partId, family:key});
                   }
              });
         })
     }     
     for(var i = 1; i < partIdResult.length; i++){
         if(partIdResult[i].family !== partIdResult[0].family){
                //error
         }
     }      
}
var partsList = {
    "familyType": {
        "A650": [{
            "partID": "2630_H"
        }, {
            "partID": "2690_H"
        }, {
            "partID": "2680_H"
        }, {
            "partID": "2600_H"
        }, {
            "partID": "2620_H"
        }, {
            "partID": "2610_H"
        }],
        "S400": [{
                "partID": "S500_Aru"
            }, {
                "partID": "S600_Aru"
            }, {
                "partID": "S700_Aru"
            }, {
                "partID": "S800_Aru"
            }, {
                "partID": "S900_Aru"
            }, {
                "partID": "S100_Aru"
            }
        ]
    }
};
function ValidateModelList(Part_id1, Part_id2){
    var part_id_1_family = getPartFamily(Part_id1);
  var part_id_2_family = getPartFamily(Part_id2)
  //alert(part_id_1_family + ", " + part_id_2_family);
    //console.log("part_id_1_family", part_id_1_family);
  //console.log("part_id_2_family", part_id_2_family);
    if(part_id_1_family != part_id_2_family) alert("parts are from different families!");
    else alert("parts from same family.")
}
function getPartFamily(part_id)
{
    var familyType = partsList.familyType;
  // loop through family type
    for(var family in familyType)
  {
    if(!familyType.hasOwnProperty(family)) continue;
    //loop through part objects in this family
    for(var j = 0; j < familyType[family].length; j++)
    {
        // check if parts id is in this array
        if(part_id == familyType[family][j].partID) return family;
    }
  }
    return false;
}
ValidateModelList("2630_H", "S900_Aru");
ValidateModelList("S600_Aru", "S900_Aru");

https://jsfiddle.net/Ladmwdvt/4/

虽然不清楚您的问题,但下面是您将如何检查的内容。

Object.keys(type.familyType).forEach(function(key,index) {
   if(key === Part_id1 || key === Part_id2){
    //do something
     } else {
    //do something else
   }
});

一个可以玩的小提琴。

https://jsfiddle.net/2cgww6ec/1/

尝试这个

var t = {
    "familyType": {
        "A650": [{
            "partID": "2630_H"
        }, {
            "partID": "2690_H"
        }, {
            "partID": "2680_H"
        }, {
            "partID": "2600_H"
        }, {
            "partID": "2620_H"
        }, {
            "partID": "2610_H"
        }],
        "S400": [{
                "partID": "S500_Aru"
            }, {
                "partID": "S600_Aru"
            }, {
                "partID": "S700_Aru"
            }, {
                "partID": "S800_Aru"
            }, {
                "partID": "S900_Aru"
            }, {
                "partID": "S100_Aru"
            }
        ]
    }
};
search("2630_H","2620_H");
function search(ida,idb) {
  $.each(t['familyType'], function(a, b) {
    var str = JSON.stringify(b);
    if(str.indexOf(ida)>=0 && str.indexOf(idb) >=0){
      alert("same family :  " + a);
      return;
    } 
  });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p> search("2630_H","2620_H") will called <p> 

试试这个:

var obj = {
    "familyType": {
        "A650": [
            {
                "partID": "2630_H"
            }, {
                "partID": "2690_H"
            }, {
                "partID": "2680_H"
            }, {
                "partID": "2600_H"
            }, {
                "partID": "2620_H"
            }, {
                "partID": "2610_H"
            }
        ],
        "S400": [
            {
                "partID": "S500_Aru"
            }, {
                "partID": "S600_Aru"
            }, {
                "partID": "S700_Aru"
            }, {
                "partID": "S800_Aru"
            }, {
                "partID": "S900_Aru"
            }, {
                "partID": "S100_Aru"
            }
        ]
    }
};
for (familyid in obj.familyType){
    obj.familyTyle[familyid].forEach(function(key){
        if(key.partID == Part_id1) family1 = familyid;
        if(key.partID == Part_id2) family2 = familyid;
    });
}
if(family1 === family2){
    alert('parts are same');
}