检查对象是否包含数组中的所有键
问题描述:
如何最简洁地检查对象是否包含数组中指定的所有键?
How can I most succinctly check if an object contains ALL of the keys specified in an array?
例如:
var arr = ["foo", "bar"];
var obj = {
foo: 1,
bar: "hello"
};
magic_function(arr, obj); // return true, all keys from array exist
var obj2 = {
foo: 12,
bar: "hi",
test: "hey"
};
magic_function(arr, obj2); // return true, all keys from array exist,
// keys not specified in array don't matter
var obj3 = {
foo: 5
};
magic_function(arr, obj3); // return false, "bar" is missing
答
这应该这样做:
var arr = ["foo", "bar"];
var obj = {
foo: 1,
bar: "hello"
};
var hasAllKeys = arr.every(function(item){
return obj.hasOwnProperty(item);
});
console.log(hasAllKeys);
Array.prototype.every()
返回 true
如果传递的函数返回数组中每个项的 true
。
Object.prototype.hasOwnProperty()
是非常不言自明。
Array.prototype.every()
returns true
if the passed function returns true
for every item in the array.Object.prototype.hasOwnProperty()
is pretty self-explanatory.