Как проверить, совпадает ли идентификатор объекта в массиве? - PullRequest
0 голосов
/ 25 января 2019

Я хочу сравнить идентификатор объекта со всеми идентификаторами объектов в массиве.

Итак, у меня есть кнопка, где я могу добавить блюдо в массив заказов.Если он не существует в массиве, тогда добавьте его в массив.Но когда он существует, замените текущий на новый объект блюда.

это выглядит примерно так:

const dish = {id:1, quantity: 4};

// This will be filled by an array push
const orders = [
  {id: 1, dish: {id:1, quantity: 1}},
  {id: 2, dish: {id:3, quantity: 5}},
  {id: 3, dish: {id:5, quantity: 1}},
  {id: 4, dish: {id:2, quantity: 3}},
  {id: 5, dish: {id:8, quantity: 1}}
]

Так что в основном у меня есть orderID и dishID

Что я пробовал:

addToCart(dish){

  const index = this.orders.findIndex((e) => e.id === dish.id);

   if(index >= 0){
      console.log('INDEX1', this.orders, index);
      this.orders[index] = {id: this.orders[index].id, dish: this.orders[index].dish};
   } else {
      this.orderCounter = this.orderCounter + 1;
      this.orders.push({id: this.orderCounter, dish: dish});
   }
}

index возвращает -1, когда я добавляю третий элемент блюда два раза, который выглядит следующим образом:

dish = {id: 3, quantity: 2}

Чеммассив заказов выглядит так:

const orders = [
  {id: 0, dish: {id:1, quantity: 1}},
  {id: 1, dish: {id:3, quantity: 2}},
  {id: 2, dish: {id:3, quantity: 2}},
]

Может ли кто-нибудь мне помочь, я ценю это:)

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Вам необходимо найти объект, свойство dish.id которого уже существует, с вашим реальным кодом, который вы сравниваете с order id. Кроме того, я внес некоторые другие незначительные изменения, чтобы исправить ваш код, проверьте ниже:

const orders = [
    {id: 0, dish: {id:1, quantity: 1}},
    {id: 1, dish: {id:3, quantity: 2}}
];

let orderCounter = 1;

function addToCart(dish)
{
   const index = orders.findIndex(({dish:{id}}) => id === dish.id);

   if (index >= 0)
   {
      orders[index].dish = dish;
   }
   else
   {
      orders.push({id: ++orderCounter, dish: dish});
   }
}

addToCart({id: 3, quantity: 5});
addToCart({id: 7, quantity: 3});
console.log(orders);
0 голосов
/ 25 января 2019

e.id идентификатор заказа, вы, вероятно, хотите e.dish.id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...