鉴于以下内容
var content = [{
"set_archived": false,
"something": [{
"id": "aa7bb3db-19a2-4ef6-5944-892edaaf53c3",
"modified": "2016-12-01T18:23:29.743333Z",
"created": "2016-12-01T18:23:29.743333Z",
"archived": false
}]
},
{
"set_archived": true,
"something": [{
"id": "aa7bb3db-19a2-4ef6-5944-892edaaf53c3",
"modified": "2017-01-30T19:42:29.743333Z",
"created": "2017-01-30T19:42:29.743333Z",
"archived": false
}]
}
];
使用Lodash,我如何确定对象数组中的set_archived
或something.archived
是否等于true?
因此,在这种情况下,因为第二个对象的set_is_archived
为真,所以预期的响应应该为真。如果任一对象中的所有项都为false,则响应应为false。
答案 0 :(得分:2)
只需使用:
_.filter(content, o => o["set_archived"] || o.something[0].archived).length > 0;
或
_.some(content, o => o["set_archived"] || o.something[0].archived);
PlainJs:
content.some(o => o["set_archived"] || o.something[0].archived)
或
content.filter(o => o["set_archived"] || o.something[0].archived).length > 0;
答案 1 :(得分:1)
您可以在普通的javascript中使用some()
。
var content = [{
"set_archived": false,
"something": [{
"id": "aa7bb3db-19a2-4ef6-5944-892edaaf53c3",
"modified": "2016-12-01T18:23:29.743333Z",
"created": "2016-12-01T18:23:29.743333Z",
"archived": false
}]
}, {
"set_archived": true,
"something": [{
"id": "aa7bb3db-19a2-4ef6-5944-892edaaf53c3",
"modified": "2017-01-30T19:42:29.743333Z",
"created": "2017-01-30T19:42:29.743333Z",
"archived": false
}]
}];
var result = content.some(function(e) {
return e.set_archived === true || e.something[0].archived === true
})
console.log(result)
答案 2 :(得分:0)
你不需要为此付出代价。您可以使用filter
:
content.filter(i => i.set_archived || i.something.archied)
答案 3 :(得分:0)
考虑与问题中的对象相同的对象,有几种方法可以找到问题配合的解决方案。
var flag = false;
flag = content.some(function(c){
if(c["set_archived"]){
return true;
}
});
console.log(flag)
或
var flag = false;
flag = content.some(function(c){
if(c["set_archived"] || c.something[0].archived){
return true;
}
});
console.log(flag)
如果数组的至少一个对象具有[" set_archived"]属性为true,则上面的代码段将为true,如果数组的所有对象都有[" set_archived& #34;]为假。 (我可以反过来说)
some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试。
every()方法测试数组中的所有元素是否都通过了提供的函数实现的测试。
如果你正在寻找一种更严格的方法,我会重新审视每一个()。