这是我的数组(http://www.jsoneditoronline.org/?id=cc51a12581667055781639b586fa6e15):
[
{
"documents": [
{
"name": "a",
"isSelected": true,
"status": "good"
},
{
"name": "b",
"isSelected": false,
"status": "good"
}
]
},
{
"documents": [
{
"name": "a",
"isSelected": true,
"status": "bad"
},
{
"name": "b",
"isSelected": false,
"status": "good"
}
]
},
{
"documents": [
{
"name": "a",
"isSelected": true,
"status": "verygood"
},
{
"name": "b",
"isSelected": false,
"status": "good"
}
]
},
{
"documents": [
{
"name": "a",
"isSelected": false,
"status": "good"
},
{
"name": "b",
"isSelected": false,
"status": "good"
}
]
}
]
我需要使用 _.lodash 编写条件。
如果数组中至少有一个 Selected
文档的 Status
不是 good
或 verygood
,则此条件必须返回 TRUE
基于上面的数组。 http://prnt.sc/de3gx9 您可以在屏幕截图中看到数组中的对象具有:
- 已选中
- 具有除
good
或verygood
之外的其他状态
如果在我的数组中至少有一个对象(isSelected = true,状态 = bad(或除 good 或 verygood 以外的任何对象)。 然后我想看到结果:TRUE
function checkStatusInArray() {
var data = [....]; // this is my array
var isDocumentSelectedWithWrongStatus = _.some(data, { isSelected: true, status: !"good" || !"verygood" });
// So if in array are some items with isSelected = true and status != good || verygood, then isDocumentSelectedWithWrongStatus = TRUE
return isDocumentSelectedWithWrongStatus;
}
最佳答案
不用 lodash 也能做到 - Array#some
在 Array#some
和一个谓词(谓词可以内联为匿名函数)中,如果谓词返回,结果将为真:
function checkData(data, predicate) {
return data.some(function(item) {
return item.documents.some(predicate);
});
}
function predicate(document) {
return document.isSelected &&
!(document.status === 'good' ||
document.status === 'verygood');
}
function checkData(data, predicate) {
return data.some(function(item) {
return item.documents.some(predicate);
});
}
function predicate(document) {
return document.isSelected &&
!(document.status === 'good' ||
document.status === 'verygood');
}
var data = [{
"documents": [{
"name": "a",
"isSelected": true,
"status": "good"
}, {
"name": "b",
"isSelected": false,
"status": "good"
}]
}, {
"documents": [{
"name": "a",
"isSelected": true,
"status": "bad"
}, {
"name": "b",
"isSelected": false,
"status": "good"
}]
}, {
"documents": [{
"name": "a",
"isSelected": true,
"status": "verygood"
}, {
"name": "b",
"isSelected": false,
"status": "good"
}]
}, {
"documents": [{
"name": "a",
"isSelected": false,
"status": "good"
}, {
"name": "b",
"isSelected": false,
"status": "good"
}]
}];
var result = checkData(data, predicate);
console.log(result);
关于javascript - 如何使用 Lodash 过滤嵌套数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40913530/