数组对象必须包含特定的 members/names
An object of array must contain specific members/names
我如何验证作为参数传递给我的 jQuery 插件的数组对象以确保它包含特定的 members/names?
例如,我想验证下面这个对象是否有 'name'、'ID' 和 'Location' 这三个成员,在这种情况下应该是真的。
var arr = [{
name: 'Johny',
ID: 1,
Location: 'USA'
}, {
name: 'Mike',
ID: 4,
Location: 'CAN'
}];
提前致谢。
强尼
你真的应该努力(并展示你已经尝试过的方法以及为什么它不起作用)。
有多种方法可以满足您的要求。这是一个:
arr.forEach(function(object) {
if (!object.name || !object.ID || !object.Location) {
throw Error("Missing properties");
}
});
您可以单独检查每个 属性 并抛出一个错误,指出缺少 属性(或属性),如果需要的话。
您可以使用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;
});
您可以使用 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;
}
我如何验证作为参数传递给我的 jQuery 插件的数组对象以确保它包含特定的 members/names?
例如,我想验证下面这个对象是否有 'name'、'ID' 和 'Location' 这三个成员,在这种情况下应该是真的。
var arr = [{
name: 'Johny',
ID: 1,
Location: 'USA'
}, {
name: 'Mike',
ID: 4,
Location: 'CAN'
}];
提前致谢。
强尼
你真的应该努力(并展示你已经尝试过的方法以及为什么它不起作用)。
有多种方法可以满足您的要求。这是一个:
arr.forEach(function(object) {
if (!object.name || !object.ID || !object.Location) {
throw Error("Missing properties");
}
});
您可以单独检查每个 属性 并抛出一个错误,指出缺少 属性(或属性),如果需要的话。
您可以使用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;
});
您可以使用 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;
}