如何检查对象是否包含一组属性
How to check an object contains a set of properties
我首先会说,我知道有很多方法可以做到这一点。这个问题是为了比较不同的版本。
我也知道我们正在寻找SO作为一个QA站点,而不是QAAAAAAA。。。地点
因此,我将完善这个问题,使其更加集中,最终得到一个答案。
给定一个对象:
var obj = {a: 1, b: 2, c: 3};
查明是否存在以下密钥:
var keys = ['a', 'b', 'c', 'd']; // 'd' would be flagged although a boolean would suffice
理想情况下,我想在ES5中这样做,但ES6非常受欢迎。
理想情况下不使用洛达什,但它非常受欢迎。
我相信有一个可爱的本地数组方法的组合会起作用:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
目标是拥有一个小而简洁的函数或代码行,而不是像这样的东西
var obj = {a: 1, b: 2, c: 3};
var keys = ['a', 'b', 'c', 'd'];
var found = keys.length;
for (var i = 0; i < keys.length; i++) {
if (obj.hasOwnProperty(keys[i])) {
found--;
}
}
console.log("Missing:", found);
我将推出第一款产品:
var obj = {a: 1, b: 2, c: 3};
var keys = ['a', 'b', 'c', 'd'];
var allPresent = Object.keys(obj).filter(function(item) {
return keys.indexOf(item) !== -1;
}).length === keys.length;
console.log("All present:", allPresent);
像这样:
var obj = {a: 1, b: 2, c: 3};
var keys = ['a', 'b', 'c', 'd'];
alert(keys.every(Object.prototype.hasOwnProperty, obj))
allPresent = keys.reduce(function ( acc, next ) {
return !acc || obj.hasOwnProperty(next);
}, true);
尽管Amits的答案可能更小,并且更适合支持"every"的浏览器。(现在应该是所有的(
给定对象:
var obj = {a: 1, b: 2, c: 3},
keys = ['a','b'];
您可以使用以下方法检查它是否包含密钥"a":
Object.keys( obj ).indexOf('a') !== -1
感谢您的评论,这里是检查OP要求完全平等的完整答案:
JSON.stringify( Object.keys( obj ) ) === JSON.stringify( keys )
或部分相等
JSON.stringify( Object.keys( obj ) ).indexOf( JSON.stringify( keys ) ) !== -1
相关文章:
- 此行是否包含函数声明
- 查找对象数组是否包含其中一个标记的最快方法
- 是否有一种方法可以使用公共代码库在Java和JavaScript中进行输入验证
- 如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符
- AngularJS - Grunt:是否存在一种解决方案来构建仅包含所需模块的正在运行的应用程序
- 检查 span 元素是否包含“文本”,并且是父元素的最后一个子元素
- 检查一个数组元素是否包含字符串
- 如何检查对象是否包含一组属性
- 检查一组url是否包含特定的表ID
- 如何判断一个对象是否包含一个数组
- Angular.js -如何使用过滤器检查一个字符串是否包含在一个数组对象中
- 是否有一种简单的方法来判断json对象是否包含属性
- 检查一个数组是否包含 JavaScript 中另一个数组的任何元素
- 是否有一个函数来检查一个数组是否包含另一个数组
- 是否有一种有效的方法来测试字符串是否包含非重叠子字符串以匹配正则表达式数组
- jQuery -检查val是否为空并包含一段特定的文本
- 检查一个数组是否包含在另一个数组中
- 在JavaScript/CoffeeScript中判断一个数组是否包含另一个数组的内容
- 检查一个数组是否包含javascript中另一个数组的一部分
- 使用下划线,了解如何查找一个数组是否包含另一个数组