在我的程序中,我经常验证对象。该验证通常包括检查对象是否具有所有已定义的键。是否有一个单行(短路,最好是单个函数调用)来检查使用纯JavaScript还是Lodash(我也在使用)?
到目前为止,我在下面的代码中这样做。我正在寻找一种更简洁的方式。
function validator(object) {
let requiredKeys = ['key1', 'key2', 'key3'];
for (let requiredKey of requiredKeys) {
if (!object.hasOwnProperty(requiredKey)) {
return false;
}
}
return true;
}
validator({ key1: 1, key2: 2, key3: 3 }); // returns true
validator({ key1: 1, key2: 2 }); // returns false
注意1:我可以在object
或object.keys()
上同时操作,因此单行功能可以Object
以及Array
。
注意2:includes()
上有Array
方法,但它只需要一个参数。我正在寻找一个需要多个版本的版本。
答案 0 :(得分:3)
您可以使用Array#every
和thisArg
查看该对象。
function check(object) {
return ['key1', 'key2', 'key3'].every({}.hasOwnProperty, object);
}
console.log(check({}));
console.log(check({ key1: 1 }));
console.log(check({ key1: 1, key2: 2 }));
console.log(check({ key1: 1, key3: 3 }));
console.log(check({ key1: 0, key2: 0, key3: 0 }));
没有thisArg
function check(object) {
return ['key1', 'key2', 'key3'].every({}.hasOwnProperty.bind(object));
}
console.log(check({}));
console.log(check({ key1: 1 }));
console.log(check({ key1: 1, key2: 2 }));
console.log(check({ key1: 1, key3: 3 }));
console.log(check({ key1: 0, key2: 0, key3: 0 }));