我有一个字符串数组,我想检查对象是否具有此数组中的所有属性。
我可以做一个for循环并使用.hasOwnProperty()
,但是我想要一种更好,更小的方法。我尝试了诸如.includes
,var v in obj
之类的操作,将数组传递给.hasOwnProperty
,但似乎没有任何效果。
const obj = {Password: '123456', Username: 'MeMyselfAndI'}
const checkFields= ['Method', 'Password', 'Username']
return checkIfObjectHaveKeysOfArray(obj, checkFields) // should return false because object doesn't have property 'Method'
有没有一种方法可以不使用for循环?如果是,怎么办?
答案 0 :(得分:3)
我可以进行for循环并使用.hasOwnProperty(),但我没有更好,更小的方法
循环不是那么大。 :-)但是您可以将every
与箭头功能配合使用:
return checkFields.every(key => obj.hasOwnProperty(key));
实时示例:
const obj = {Password: '123456', Username: 'MeMyselfAndI'}
const checkFields= ['Method', 'Password', 'Username']
const result = checkFields.every(key => obj.hasOwnProperty(key));
console.log(result); // false
答案 1 :(得分:0)
您可以使用Object.hasOwnProperty
并检查每个键。
const
object = { Password: '123456', Username: 'MeMyselfAndI' },
checkFields = ['Method', 'Password', 'Username'],
hasAllKeys = checkFields.every({}.hasOwnProperty.bind(object));
console.log(hasAllKeys);