检查对象数组是否具有所有必需的键

时间:2016-04-24 11:23:12

标签: javascript jquery

我有一个这样的对象:

var field_arr = [{name:name},{email:email},{tel:tel}];

如何获取姓名,电子邮件或电话(属性密钥)的值?我想使用循环来提示用户缺少什么。例如,如果用户错过了电话,则会出现提示tel is missing

的警报

4 个答案:

答案 0 :(得分:1)

我认为你不需要它就是一个阵列。只需循环遍历JSON对象的所有属性。

 var obj = {
   name: "name",
   email: "",
   tel: "tel"
 };
 $.each(obj, function(key, value) {
   if (value == "") {
     console.log(key + ": " + value);
   }

 });

答案 1 :(得分:0)

你想要:

  • 将您的field_arr对象转换为key =>值类型对象
  • 然后在您的所需列表上循环以检查每个项目是该对象中的键:

代码:

var arr = {};
for(var i=0; i<field_arr.length; i++){
   var key = Object.keys(field_arr[i])[0];
   arr[key] = field_arr[i][key];
}

// At this point you have a key => value type array in "arr"

var required_list = ["name", "email", "tel"];
for(var i=0; i<required_list.length; i++){
  var item = required_list[i];
  if(! item in arr) {
     alert(item+" is missing");
  }
}

如果你想使用forEach而不是for循环:

var arr = {};
field_arr.forEach(function(obj){
      var key = Object.keys(obj)[0];
      arr[key] = obj[key];
   });
}

// At this point you have a key => value type array in "arr"

var required_list = ["name", "email", "tel"];
required_list.forEach(function(item){
   if(! item in arr)
      alert(item+" is missing");
});

答案 2 :(得分:0)

假设您使用jQuery或其他东西存储来自某些字段的值。你可以这样做:

var field_arr = [{name:"name"},{email:""},{tel:"lol"}];
jQuery.each(field_arr,function(obj){
        for (var i in obj) {
            if (obj[i].trim() === "") {
                 console.log(i + " is missing");
            }
        } 
 });

答案 3 :(得分:0)

假设filed_arr是用户输入,您无法更改其形式,并希望将其与required字段进行比较

var field_arr = [{name:'abc'},{email:'xyz'}];

var required = ['name', 'email' , 'tel'];

var inputKeys = field_arr.reduce(function(prev,next){
  return prev.concat(Object.keys(next));
},[]);

document.write('<pre>inputKeys => ' +inputKeys+'</pre>');

var missingKeys = required.filter(function(key){
  return inputKeys.indexOf(key) == -1;
});

document.write('<pre>missingKeys => ' +missingKeys+'</pre');

alert('You are missing '+missingKeys);