给出以下数组
const validKeyNames = ['name', 'gender', 'hasTheForce']
是否可以检查对象键是数组元素之一。
我希望能够做到这样的事情:
{ name: 'Luke Skywalker', gender: 'Male', hasTheForce: true } // => true
{ name: 'James Brown', gender: 'Male', hasTheFunk: true } // => false
答案 0 :(得分:3)
您可以在every()
上使用Object.Keys()
并使用includes()
检查密钥是否存在于数组中
const validKeyNames = ['name', 'gender', 'hasTheForce']
var a = { name: 'Luke Skywalker', gender: 'Male', hasTheForce: true }
var b = { name: 'James Brown', gender: 'Male', hasTheFunk: true }
function check(obj, arr) {
return Object.keys(obj).every(e => arr.includes(e));
}
console.log(check(a, validKeyNames))
console.log(check(b, validKeyNames))
答案 1 :(得分:0)
我会告诉你如何实现这个目标。
1.最初使用.sort()
排序有效密钥数组。
2.对于对象中的每个键(使用for in
循环),在key <= array[iterator]
之前检查它是否存在于valid数组中。只要key > array[iterator]
,您就可以安全地确认数组中没有该键。
答案 2 :(得分:0)
您可以使用Object.hasOwnProperty
并绑定对象进行检查。
function check(object) {
return validKeyNames.every({}.hasOwnProperty.bind(object));
}
const validKeyNames = ['name', 'gender', 'hasTheForce']
console.log(check({ name: 'Luke Skywalker', gender: 'Male', hasTheForce: true })); // true
console.log(check({ name: 'James Brown', gender: 'Male', hasTheFunk: true })); // false
&#13;