如何检查对象是否具有数组中的键?

时间:2019-01-28 14:30:24

标签: javascript

我有一个字符串数组,我想检查对象是否具有此数组中的所有属性。

我可以做一个for循环并使用.hasOwnProperty(),但是我想要一种更好,更小的方法。我尝试了诸如.includesvar 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循环?如果是,怎么办?

2 个答案:

答案 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);