.filter 中的 ES6 .filter

Dil*_*eet 2 javascript arrays ecmascript-6

所以我有如下数据:

[
     {
      "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": []
     },
]
Run Code Online (Sandbox Code Playgroud)

我正在尝试过滤数组,并且仅在标签数组包含==指向另一个字符串的值时才返回。

这是我想出的,但似乎仍在发回整个阵列:

const tagMoodboards = _moodboards.filter(mb => { return mb.tags.filter(t => t.value == name) })
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 7

你不想一filterfilter-相反,在过滤器内,检查sometags对象有.value属性,你想

const _moodboards = [
     {
      "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": []
     },
];
const name = 'Architecture';
console.log(_moodboards.filter(({ tags }) => (
  tags.some(({ value }) => value === name)
)));
Run Code Online (Sandbox Code Playgroud)