Фильтрация нескольких элементов с помощью функций массива ES6

1

Этот код исключает только то, что Джон - лучший способ отфильтровать Джона, Брайана и Джеймса?

const names = ["John", "Mary", "Max", "Brian", "James"]
const filterdNames = names.filter((value) => {
  return value !== 'John' && 'Brian' && 'James';
});
console.log(filterdNames)
  • 1
    Почти все языки программирования, которые я знаю (включая javascript), будут интерпретировать это как (value !== 'John') && ('Brian') && ('James') .
Теги:
arrays

5 ответов

3
Лучший ответ
const names = ["John", "Mary", "Max", "Brian", "James"]
const filterdNames = names.filter((value) => {
  return ["John", "Brian", "James"].includes(value) === false;
});

Вы можете использовать Array.includes

2

Создайте массив имен, которые вы хотите отфильтровать заранее, а затем вы можете просто проверить на Отрицание includes в includes на нем:

const names = ["John", "Mary", "Max", "Brian", "James"];
const filterOut = ['John', 'Brian', 'James'];
const filterdNames = names.filter(value => !filterOut.includes(value));
console.log(filterdNames)
2

Вы близки, но ваш код немного ошибочен. Вы должны добавить value !== для каждого условия.

const names = ["John", "Mary", "Max", "Brian", "James"]
const filterdNames = names.filter((value) => {
  return value !== 'John' && value !==  'Brian' && value !==  'James';
});
console.log(filterdNames)
1
const names = ["John", "Mary", "Max", "Brian", "James"]
const filterdNames = names.filter((value) => {
  return value != "John" && value != 'Brian' && value != 'James';
});
console.log(filterdNames)
0

Строка, длина которой больше или равна одному символу, будет оцениваться как true при принуждении к логическому значению. && - логический оператор И. Поэтому в вашем фильтре указывается, что имя не равно Джону И истинному И истинному. Вы хотите сказать, если имя НЕ является Джоном, а имя НЕ БРИАН И имя НЕ Джеймс. Это должно выглядеть так.

const names = ["John", "Mary", "Max", "Brian", "James"]
const filterdNames = names.filter((value) => {
  return value !== 'John' && value !== "Brian" && value !== "James"
});
console.log(filterdNames)
  • 0
    Имеет смысл. основы

Ещё вопросы

Сообщество Overcoder
Наверх
Меню