admin管理员组文章数量:1398802
Given the following array
const validKeyNames = ['name', 'gender', 'hasTheForce']
Is it possible to check an objects key is one of an arrays elements.
I want to be able to do something like:
{ name: 'Luke Skywalker', gender: 'Male', hasTheForce: true } // => true
{ name: 'James Brown', gender: 'Male', hasTheFunk: true } // => false
Given the following array
const validKeyNames = ['name', 'gender', 'hasTheForce']
Is it possible to check an objects key is one of an arrays elements.
I want to be able to do something like:
{ name: 'Luke Skywalker', gender: 'Male', hasTheForce: true } // => true
{ name: 'James Brown', gender: 'Male', hasTheFunk: true } // => false
Share
Improve this question
asked May 29, 2017 at 10:25
malimichaelmalimichael
2471 gold badge6 silver badges18 bronze badges
2
-
@synthet1c please explain why?
hasTheFunk
is not one of thevalidKeyNames
– malimichael Commented May 29, 2017 at 10:29 - misread the objects keys – synthet1c Commented May 29, 2017 at 10:34
4 Answers
Reset to default 6You can use every()
on Object.Keys()
and check if key exists in array using 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))
I will give you an idea on how to achieve this.
1.Sort the array of valid keys initially using .sort()
.
2.For each key in the object(using for in
loop) check whether it is present in the array of valids until key <= array[iterator]
. Whenever key > array[iterator]
you can safely confirm that key is not present in the array.
You could use Object.hasOwnProperty
and bind the object for checking.
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
I think you can validate using something like this:
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))
本文标签: Validate javascript object keys against an arrayStack Overflow
版权声明:本文标题:Validate javascript object keys against an array - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744124077a2591873.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论