过滤数组的子数组

时间:2019-03-09 00:10:06

标签: javascript arrays multidimensional-array filter

我正在尝试过滤父数组的子数组,结果返回为空。我正在尝试找到与color_family相匹配的内容。

我的数组如下:

const arr =[
  {
    "id": 123,
    "acf": {
      "product_colors": [
        {
          "color_family": "grey"
        },
        {
          "color_family": "taupe"
        }
      ]
    }
  },
  {
    "id": 456,
    "acf": {
      "product_colors": [
        {
          "color_family": "red"
        },
        {
          "color_family": "taupe"
        }
      ]
    }
  }
]

我要过滤的是

const findColors = ["grey", "taupe"]

我没有运气尝试过的是

const res = arr.filter(
  x => x.acf.product_colors.find(
    color_family => findColors.includes(color_family)
  )
)

它应返回2个结果时不返回任何结果。有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

除了输入错误外,find参数的参数是带有color_family的对象:

const res = arr.filter(x => x.acf.product_colors.find(col => {
  return findColors.includes(col.color_family);
}))