繁体   English   中英

针对数组验证 javascript object 键

[英]Validate javascript object keys against an array

给定以下数组

const validKeyNames = ['name', 'gender', 'hasTheForce']

是否可以检查对象键是 arrays 元素之一

我希望能够做类似的事情:

{ name: 'Luke Skywalker', gender: 'Male', hasTheForce: true } // => true
{ name: 'James Brown', gender: 'Male', hasTheFunk: true } // => false

您可以使用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.最初使用.sort()对有效键的数组进行排序。

2.对于对象中的每个键(在for in循环中使用)检查它是否存在于有效数组中,直到key <= array[iterator]为止。 每当key > array[iterator]您都可以安全地确认数组中不存在key。

您可以使用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 

我想你可以使用这样的东西来验证:

    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).sort().toString() === arr.sort().toString()
}

console.log(check(a, validKeyNames))
console.log(check(b, validKeyNames))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM