Javascript. Включает метод не работает, как ожидалось - PullRequest
0 голосов
/ 30 ноября 2018

Я работаю с 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 голосов
/ 30 ноября 2018

включает в себя метод, поэтому должен использоваться как somArray.includes(value).

Обратите внимание, что метод включает не поддерживается в IE или Edge <14.Если вы не используете IE / Edge <14, проблем нет.В противном случае используйте старый добрый метод indexOf для поиска элементов в массиве. </p>

...