lodash过滤器在Shopify订单的多维数组中找不到值

Bra*_*ish 5 javascript arrays shopify lodash

在处理之前查看订单line_item是否已退款...

这是一个单一订单:

var order = {
  line_items: [
    {
      id: 1326167752753
    }
  ],
  refunds: [
    {
      refund_line_items: [
        {
          id: 41264152625,
          line_item_id: 1326167752753,
        }
      ]
    }
  ]
};
Run Code Online (Sandbox Code Playgroud)

试图注销过滤结果:

console.log(
  _.filter(order, {
    refunds: [
      {
        refund_line_items: [
          {
            line_item_id: 1326167752753
          }
        ]
      }
    ]
  }).length
);
Run Code Online (Sandbox Code Playgroud)

0上了控制台.

我在这种情况下使用_.filter错了吗?

tok*_*and 1

函数take需要一个数组(order不是数组,order.refunds是)和一个谓词,而不是一个对象。

无论如何,我会使用以下方式编写它Array.some

const itemWasRefunded = order.refunds.some(refund =>
  refund.refund_line_items.some(refund_line_item =>
    refund_line_item.line_item_id === 1326167752753
  )
);
Run Code Online (Sandbox Code Playgroud)

或者,获取所有line_item_ids 并检查包含情况:

const itemWasRefunded = _(order.refunds)
  .flatMap("refund_line_items")
  .map("line_item_id")
  .includes(1326167752753);
Run Code Online (Sandbox Code Playgroud)