javascript .includes方法无法按预期工作

时间:2018-11-30 13:37:24

标签: javascript arrays node.js stripe-payments

我正在使用Stripe API以获得订阅中所有使用过的产品的列表。我正在检查所有订阅,并将用过的产品添加到阵列中(或者我正在尝试)。

我只想添加尚未添加的产品。

router.get('/getusedproducts', asyncHandler(async(req,res,next) => {
  var products = [];
  for await (const subscription of stripe.subscriptions.list()) {
    for (i = 0; i < subscription.items.data.length; i++) {
      var prod = subscription.items.data[i].plan.product;
      if (!products.includes[prod]){
        products.push(prod)
        console.log(prod);
      }
    }
  }
  res.send(products)
}));

当前,这段代码无法正常工作,因为我仍然看到控制台记录了所有产品。理想情况下,支票!products.includes[prod]应该可以避免这种情况,但事实并非如此。我已经在此处阅读了几篇有关堆栈的讨论(1)(2)(3

不确定确切如何将数组中的项目与我从JSON对象获取的新项目进行比较以检查是否存在。

感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

includes是方法,因此必须像somArray.includes(value).一样使用

请注意,IE或Edge <14不支持include方法。如果您的目标不是IE / Edge <14,则那里没有问题。否则,请使用良好的旧indexOf方法在数组中查找元素。