我有一个这样的对象:
var field_arr = [{name:name},{email:email},{tel:tel}];
如何获取姓名,电子邮件或电话(属性密钥)的值?我想使用循环来提示用户缺少什么。例如,如果用户错过了电话,则会出现提示tel is missing
。
答案 0 :(得分:1)
我认为你不需要它就是一个阵列。只需循环遍历JSON对象的所有属性。
var obj = {
name: "name",
email: "",
tel: "tel"
};
$.each(obj, function(key, value) {
if (value == "") {
console.log(key + ": " + value);
}
});
答案 1 :(得分:0)
你想要:
代码:
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);