【发布时间】:2020-05-27 14:06:11
【问题描述】:
所以我碰巧浏览了这两个帖子:
-
[ { "id": 0, "title": "happy dayys", "owner": {"id": "1", "username": "dillonraphael"}, "tags": [{"value": "Art", "label": "Art"}], "items": [] }, { "id": 1, "title": "happy dayys", "owner": {"id": "1", "username": "dillonraphael"}, "tags": [{"value": "Architecture", "label": "Architecture"}], "items": [] }, ]
在此 OP 中,尝试通过无效的嵌套过滤器过滤数据:
const tagMoodboards = _moodboards.filter(mb => { return mb.tags.filter(t => t.value == name) });
原因是内部 filter 返回一个数组(真实),所以对于外部数组,它变成这样 _moodboards.filter(mb => true) 因此它打印整个数组
然后有类似的问题
哪里有这样的数据:
{
"list": [
{
"deviceId": "2a-d539-4031-9bfc-4a42f2f765cf",
"versions": [
{
"id": "764c20-a213-9235f4b553b3",
"createdTime": 1590361208034,
"files": [
{
"fileType": "VLAN"
},
{
"fileType": "STARTUPCONFIG",
}
],
"startupRunningStatus": "OUT_OF_SYNC",
"createdBy": "SCHEDULED"
},
{
"id": "9bd33-a45a-ed2fefc46931",
"createdTime": 1589972337717,
"files": [
{
"fileType": "VLAN",
},
{
"fileType": "STARTUPCONFIG",
},
{
"fileType": "RUNNINGCONFIG",
}
],
"startupRunningStatus": "IN_SYNC",
"createdBy": "SCHEDULED_FIRST_TIME"
}
]
}
]
}
并且 OP 想要过滤数据,它应该只返回存在“fileType”:“RUNNINGCONFIG”和“fileType”:“STARTUPCONFIG”的数组
但在这种情况下,filter 中的 filter 似乎可以完成这项工作
let versionsData = obj.list[0].versions;
versionsData = versionsData.filter( versions => { return versions.files.filter( m => {
return m.fileType === "RUNNINGCONFIG" || m.fileType === "STARTUPCONFIG" }).length > 1 }
);
console.log(versionsData);
在第二种情况下,我觉得它应该遵循相同的模式 versionData = versionData.filter(versions => true) 因此返回完整的数组。
那么,我的问题是我到底错过了什么?我哪里错了?
【问题讨论】:
-
不要把别人的代码放在你自己的里面。只需说明您的问题(使用数据)、您的尝试和您想要的输出。
标签: javascript arrays filter