检查key是否存在于对象数组中
Javascript: Check whether key exists in an array of objects
var _ = require('lodash');
var users = [
{ 'id': '1', 'coins': false },
{ 'id': '2', 'coins': false }
];
var a = _.every(users, function(p){
if ('id' in p && 'coins' in p)
return true;
else
return false;
});
console.log(a);
函数的作用是检查对象数组中是否存在键。如果其中一个对象不存在"id"或"coins",则返回false。
有没有更好的方法来写这段代码?我觉得很笨拙。
因为你是在node.js中,你知道你已经有了array.every()
,所以我不认为这里有任何理由使用lodash或if/else
。
var users = [
{ 'id': '1', 'coins': false },
{ 'id': '2', 'coins': false }
];
var allValid = users.every(function(item) {
return 'id' in item && 'coins' in item;
});
仅供参考,此代码假设没有人神秘地向对象添加名为id
或coins
的属性。原型(这似乎是一个安全的假设)。如果你想防止这种情况,你可以使用item.hasOwnProperty('id')
而不是in
。
至少,替换:
if ('id' in p && 'coins' in p)
return true;
else
return false;
:
return 'id' in p && 'coins' in p;
基本上,从不使用这样的结构:
if (x)
return true;
else
return false;
x
已经是一个布尔值,或者至少是一个真/假值。
如果您需要确保返回值是布尔值,只需强制它为一个:
return !!('id' in p && 'coins' in p);
同样,正如在另一个答案中提到的,lodash在这里是多余的。你可以使用JS的原生[every][3]
。
替换:
_.every(users, function(p){
:
users.every(function(p){
您可以使用_.has()
来检查对象属性是否存在:
function checkValidity(array, listOfKeys) {
return _.every(array, function (item) {
return _.every(listOfKeys, function (key) {
return _.has(item, key);
});
});
}
用法:
checkValidity(users, ['id', 'coins']);
我将使用[Array.prototype.some()][1]函数:
var users = [
{ 'id': '1', 'coins': false },
{ 'id': '2', 'coins': false }
];
var result = users.some(e => e.hasOwnProperty('id') && e.hasOwnProperty('coins'));
console.log("The array contains an object with a 'name' and 'quantity' property: " + result);
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在Javascript中转换对象数组
- 在JavaScript中通过索引从对象数组中获取值
- Backbone虹吸以获取对象数组
- 如何在DataTables 2.1中迭代对象数组
- Javascript-根据赋值顺序,按键合并对象数组
- 将事件附加到对象/数组
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript在数组中获取对象数组中键的所有不同值
- 在对象数组中查找多个值的d3范围
- Undercore.js获取对象数组中键对象的值
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 如何通过json对象数组为嵌套对象赋值
- 如何循环通过2个对象数组并通过匹配id进行合并
- 为对象数组创建列表项
- 如何使用javascript合并两个对象数组
- JSON到对象数组,并向每个对象添加项
- JavaScript:从对象数组中获取唯一值及其计数
- 按不同项目对对象数组进行排序