根据数组验证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