Я шукаю ефективний спосіб видалити всі елементи з масиву javascript, якщо вони є в іншому масиві.
// If I have this array:
var myArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
// and this one:
var toRemove = ['b', 'c', 'g'];
Я хочу працювати з myArray, щоб залишити його в такому стані: ['a', 'd', 'e', 'f']
За допомогою jQuery я використовую grep()
і inArray()
, який добре працює:
myArray = $.grep(myArray, function(value) {
return $.inArray(value, toRemove) < 0;
});
Чи існує чистий javascript спосіб зробити це без циклу та сплайсингу?
.filter()
. Замість цього ви будете використовувати for
петлі. Ви можете уникнути, .splice()
якщо оригінальне замовлення не потрібно підтримувати. Або є способи зробити .splice()
більш ефективними, якщо ви думаєте, що буде видалено багато предметів.