根据数组验证javascript对象键

根据数组验证javascript对象键,javascript,arrays,Javascript,Arrays,给定以下数组 const validKeyNames = ['name', 'gender', 'hasTheForce'] 是否可以检查对象键是否为数组元素之一 我希望能够做到以下几点: { name: 'Luke Skywalker', gender: 'Male', hasTheForce: true } // => true { name: 'James Brown', gender: 'Male', hasTheFunk: true } // => false 您可以在

给定以下数组

const validKeyNames = ['name', 'gender', 'hasTheForce']
是否可以检查对象键是否为数组元素之一

我希望能够做到以下几点:

{ name: 'Luke Skywalker', gender: 'Male', hasTheForce: true } // => true
{ name: 'James Brown', gender: 'Male', hasTheFunk: true } // => false
您可以在
Object.Keys()
上使用
every()
,并使用
includes()

const validKeyNames=['name','gender','hasteforce']
var a={name:'Luke Skywalker',性别:'Male',hasteforce:true}
var b={姓名:“詹姆斯·布朗”,性别:“男性”,hassefunk:true}
功能检查(obj、arr){
返回Object.keys(obj).every(e=>arr.includes(e));
}
console.log(检查(a,validKeyNames))

log(检查(b,validKeyNames))
我将告诉您如何实现这一点

1.首先使用
.Sort()
对有效密钥数组进行排序

2.对于对象中的每个键(使用
For in
循环)检查它是否存在于valid数组中,直到
键数组[迭代器]
您可以安全地确认键不存在于数组中。

您可以使用并绑定对象进行检查

功能检查(对象){
返回validKeyNames.every({}.hasOwnProperty.bind(object));
}
const validKeyNames=['name','gender','hasseforce']
log(检查({name:'Luke Skywalker',gender:'Male',hasteforce:true}));//真的

log(检查({name:'James Brown',gender:'Male',hassefunk:true}));//false
@synthet1c请解释原因
HasOffunk
不是
validKeyNames
误读对象的其中一个键是,但。。。当你有一个像
{name:'Luke Skywalker',gender:'Male',hasteforce:true,batter:'boo'}这样的目标对象时,这会失败
。。比公认的答案更有效…@Redu,在上述情况下,什么失败了?OP说“检查对象键是数组元素之一”。。。因此,
batter
作为对象键(属性)不是数组元素之一。。但是您的代码返回
true