如何验证作为参数传递给我的jQuery插件的数组对象,以确保它包含特定的成员/名称?
例如,我想验证下面这个对象是否有'name','ID'和& “位置”,这三个成员,在这种情况下应该是真的。
var arr = [{
name: 'Johny',
ID: 1,
Location: 'USA'
}, {
name: 'Mike',
ID: 4,
Location: 'CAN'
}];
提前致谢。
约翰尼拉
答案 0 :(得分:3)
您可以使用Array.prototype.every
方法测试数组中的每个对象是否符合必要的键规则:
var valid = arr.every(function(obj) {
var keys = Object.keys(obj);
return keys.length === 3 && 'name' in obj && 'ID' in obj && 'Location' in obj;
});
答案 1 :(得分:2)
你应该真的付出努力(并展示你尝试过的东西以及它为什么不起作用)。
有很多方法可以做你所要求的。这是一个:
arr.forEach(function(object) {
if (!object.name || !object.ID || !object.Location) {
throw Error("Missing properties");
}
});
您可以单独检查每个属性,并抛出一个错误,表明如果需要,会说明缺少哪些属性(或属性)。
答案 2 :(得分:1)
您可以使用Object.hasOwnProperty()
来检查每个属性是否存在:
function isValid(arr){
// If arr is an array
if( arr && arr.constructor === Array){
// For each item
for(var i=0, l=arr.length; i<l; i++){
var item = arr[i];
if( !typeof item !== 'object'
|| !item.hasOwnProperty('name')
|| !item.hasOwnProperty('ID')
|| !item.hasOwnProperty('Location')
// This is to check if it has *exactly* those 3 properties and no more
|| Object.keys(arr).length != 3){
return false;
}
}
return true;
}
return false;
}