Фильтровать массив по нескольким условиям

#javascript #arrays

#javascript #массивы

Вопрос:

Массив выглядит следующим образом

 products = [
    {
      "id": "5c94aa7b7a37631ce2a97a72",
      "material": "5c9485d37804946bc487ce59",
    },
    {
      "id": "5c94aa7b7a37631ce2a97a72",
      "material": "5c94862a7804946bc487ce5e",
    },
    {
      "id": "5c94aa7b7a37631ce2a97a72",
      "material": "5c9486397804946bc487ce61",
    },
    {
      "id": "5c94a0a87a37631ce2a979de",
      "material": "5c9485d37804946bc487ce59",
    },
    {
      "id": "5c94a0a87a37631ce2a979de",
      "material": "5c94862a7804946bc487ce5e",
    },
    {
      "id": "5c94a0a87a37631ce2a979de",
      "material": "5c9486397804946bc487ce61",
    }
  ]
  

и когда я пытаюсь удалить только один элемент с помощью id="5c94aa7b7a37631ce2a97a72" и material="5c9485d37804946bc487ce59"

Я использую функцию filter

 filtered = products.filter(x => x.id !== id amp;amp; x.material !== material);
  

он удаляет все продукты с этими идентификаторами и материалами. Как правильно задавать условия в этой функции?

Комментарии:

1. может быть products.filter(x => !(x.id == id amp;amp; x.material == material)) ?

2. он удаляет все продукты с этими идентификаторами и материалами. тогда чего вы ожидаете? что в результате?

3. Мне серьезно интересно, почему вы спрашиваете, как написать условие на javascript, вы должны хорошо знать это, прежде чем стать разработчиком. И это пахнет домашней работой…

Ответ №1:

Просто используйте || вместо amp;amp; , так что оба условия должны быть ложными, чтобы filter обратный вызов вернул false :

 const products = [{
    "id": "5c94aa7b7a37631ce2a97a72",
    "material": "5c9485d37804946bc487ce59",
  },
  {
    "id": "5c94aa7b7a37631ce2a97a72",
    "material": "5c94862a7804946bc487ce5e",
  },
  {
    "id": "5c94aa7b7a37631ce2a97a72",
    "material": "5c9486397804946bc487ce61",
  },
  {
    "id": "5c94a0a87a37631ce2a979de",
    "material": "5c9485d37804946bc487ce59",
  },
  {
    "id": "5c94a0a87a37631ce2a979de",
    "material": "5c94862a7804946bc487ce5e",
  },
  {
    "id": "5c94a0a87a37631ce2a979de",
    "material": "5c9486397804946bc487ce61",
  }
];
console.log(products.length);
const id = "5c94aa7b7a37631ce2a97a72";
const material = "5c9485d37804946bc487ce59";
const filtered = products.filter(x => x.id !== id || x.material !== material);
console.log(filtered.length);
console.log(filtered);