如何检查对象的键以一种更复杂的方式存在



我有一个对象来检查每个键是否存在。

{ _id: 5e907e4047dd2f290ea4d23b,
username: 'gg',
email: 'gg',
isSensei: false,
location: 3,
location2: 0,
age: 7,
country: 'AI',
introduce: 'Nice to meet you' }
if (obj.hasOwnProperty(username) && obj.hasOwnProperty(email) && ... ) {
// do something
}

如果零件看起来又长又丑。是否可以检查每一个字段是否存在于一行代码中?

首先,您可以使用Object.keys()从对象中获取所有键。然后,使用.every().includes()组合,您可以确定是否所有关键点都反映在对象中——您正在寻找的东西,例如,从fieldsToCheck数组中——我为更好地表示而创建的东西。

尝试如下:

const obj =  { _id: '5e907e4047dd2f290ea4d23b', username: 'gg', email: 'gg', isSensei: false, location: 3, location2: 0, age: 7, country: 'AI', introduce: 'Nice to meet you' };
const fieldsToCheck = ['email', 'username', 'location'];
const keys = Object.keys(obj);
const hasAll = fieldsToCheck.every(e => keys.includes(e));
console.log(hasAll);

参见.every():文档中的重要部分

every()方法测试数组中的所有元素是否都通过了所提供函数实现的测试。它返回一个布尔值。

所以最后你可以像下面这样进一步使用:

if (hasAll) {
// your code
}

我希望这能有所帮助!

您可以使用Object.keys()Array.prototype.every()

const data = {
_id: '5e907e4047dd2f290ea4d23b',
username: 'gg',
email: 'gg',
isSensei: false,
location: 3,
location2: 0,
age: 7,
country: 'AI',
introduce: 'Nice to meet you'
};
const keys = Object.keys(data);
const isExistsEveryKeys = keys.every(key => data[key] !== undefined); // This will check every keys existance, If all the keys exists then it returns true, and returns false otherwise.
console.log(isExistsEveryKeys);

相关内容

最新更新