Как удалить элементы из массива, отличные от x или y в javascript

#javascript

#javascript

Вопрос:

Я пытаюсь удалить все элементы из массива, отличные от x или y (если таковые имеются)

Пример:
случай 1:

 let array = ['a','b','c','d','x','y']
  

Итак, в этом случае, кроме x и y, я хочу удалить все остальные элементы.
вывод: ['x','y']

Случай 2:

 let array = ['a','b','c','d','x']
  

В этом случае, кроме x, я хочу удалить все остальные элементы.
вывод: ['x']

Случай 3:

 let array = ['a','b','c','d']
  

В этом случае я хочу удалить все элементы.
вывод: [ ]

Не удалось найти лучшего подхода для продолжения этого. Любая помощь будет оценена. СПАСИБО 🙂

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

1. Волшебное слово: фильтр массива. array.filter(e => ['x', 'y'].includes(e))

2. array = array.filter(e => e === "x" || e === "y") или array = array.filter(e => ["x", "y"].includes(e))

3. output=[]; if(array.includes("x")) output.push("x"); if(array.includes("y")) output.push("y");

4. Чтобы сохранить все остальные, кроме x и y, просто отрицайте выражение array.filter(e => !['x', 'y'].includes(e)) .

5. @Sohan … вы хотите изменить массив, с которым работаете, или вы полностью удовлетворены многими решениями, которые продвигают отрицаемый filter подход, который, конечно, возвращает новый экземпляр массива и оставляет исходный массив нетронутым?

Ответ №1:

Просто объявите разрешенные строки внутри отдельного массива, а затем используйте filter метод для массива.

 const allowedStrings = ['x', 'y'];

let array = ['a','b','c','d','x','y'].filter(
   item => allowedStrings.includes(item)
);`
  

Источник: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

Ответ №2:

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

 let array = ['a','b','c','d','x','y'].filter(item => ['x','y'].includes(item));
console.log(array);
  

Ответ №3:

Вы можете выполнить это с помощью следующей команды:

 array = array.filter(v => v==="x" || v==="y")
  

Ответ №4:

Вы можете выполнить это с Array.prototype.filter() помощью и Array.prototype.includes

 let array = ['a', 'b', 'c', 'd']; // create the array

// filter out every letter not included in the given array
console.log(array.filter((letter) => ['a', 'b'].includes(letter)));

// you can also filter out every letter that *is* is the given array
console.log(array.filter((letter) => !['a', 'b'].includes(letter)));