[英]Check that array of objects has all required keys
我有一個這樣的對象:
var field_arr = [{name:name},{email:email},{tel:tel}];
如何獲取名稱,電子郵件或電話(屬性密鑰)的值? 我想使用一個循環來提示用戶缺少什么。 例如,如果用戶錯過了電話,將會有一條警報說tel is missing
。
我認為您不需要將其作為數組。 只需遍歷JSON對象的所有屬性即可。
var obj = {
name: "name",
email: "",
tel: "tel"
};
$.each(obj, function(key, value) {
if (value == "") {
console.log(key + ": " + value);
}
});
你想要 :
代碼:
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");
});
假設您正在使用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");
}
}
});
假設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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.