在对象javascript中进行类型检查

时间:2018-06-21 16:38:27

标签: javascript

我有这个代码。我需要为此对象编写一个验证。如果任何属性为空,或者不是字符串控制台,则记录错误或控制台记录消息。

<body>
    <div> 
        <h3>Selected:@Model.SelectedText</h3>
        <h3>Path:@Model.Path</h3>
        <h3>Find:@Model.Find</h3>
    </div>
</body>

如何为ob1和ob2编写代码或功能。

2 个答案:

答案 0 :(得分:0)

您可以使用构造函数来检查它是否是对象数组,然后简单地基于该对象进行迭代并检查每个元素。

var obj = { ob1 : {"val1" : "test1", "val2" : "test1"},
            ob2 : ["v2", "v3", ""]
          };
 var result = true;
 Object.keys(obj).forEach((key)=>{
  if(obj[key].constructor.toString().indexOf('Array') > 0){
    obj[key].forEach((element)=>{
      if(typeof element !=='string' || element === '')
        result = false;
    });
  }
  if(obj[key].constructor.toString().indexOf('Object') > 0){
    Object.keys(obj[key]).forEach((element)=>{
      if(typeof obj[key][element] !=='string' || element === '')
        result = false;
    });
   }
 });
if(!result)
  console.error('A property is not a string or empty!');

答案 1 :(得分:0)

也许是这样的:

var obj = {
           ob1 : {
           	       "val1" : "test1",
           	       "val2" : "test2"
           },
           ob2 : [
                  "v2",
                  "v3",
                  "v4"
           ]
          };

for (var property in obj){
   if (typeof obj[property] !=='string' || obj[property] !== null){
     console.log(property + ' is NOT empty or not a string!');
      if(obj[property] instanceof Array){
      	  console.log(property + ' is Array');
      	  for(var ka in obj[property]){
      	  	 console.log(' array el ->'+obj[property][ka]);
      	  }
      }else if(typeof obj[property]==='object'){
         console.log(property + ' is object');
         for(var ko in obj[property]){
         	   console.log(' obj el ('+ko+') - >'+obj[property][ko]);
         }

      }

   }
};