#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)));