Удалить дубликаты массивов в Javascript
Недавно я работал над проектом, использующим сторонний API, который возвращал дубликаты в некоторых возвращаемых массивах, и мне нужно было удалить из них дубликаты.
Я счел целесообразным написать, как я решил эту проблему, на случай, если кто-то еще столкнется с этой проблемой.
Использование функции Javascript SET
Все, что нам нужно сделать, это инициализировать новый набор и передать требуемый массив, который нам нужен для удаления дубликатов, как показано ниже.
const array = ["ade", "kemi", "bose", "esther", "felele", "ade"];
const uniqeSet = new Set(array);
/* this by default returns back an object of the unique value passed in the array * above which we can spread in an array.
*/
// Set {"ade", "kemi", "bose", "esther", "felele"}
const arrayResponse = [...uniqeSet];
// ["ade", "kemi", "bose", "esther", "felele"]
В качестве альтернативы вы также можете использовать Array.from() для преобразования вашего объекта в массив.
Использование функции ФИЛЬТР Javascript
Метод filter() создает массив, заполненный всеми элементами массива, прошедшими тест (предоставляется как функция).
Это означает, что как только набор условий будет передан, он будет включен в массив.
Фильтр также позволяет передавать некоторые другие параметры, такие как параметр индекса, который возвращает позицию элемента массива.
Например.
const arrays = ["ade", "kemi", "bose", "esther", "felele", "ade"];
const uniqueArray = arrays.filter(
(array, index) => arrays.indexOf(array) === index
);
// ["ade", "kemi", "bose", "esther", "felele"]
Использование функции уменьшения Javascript
Этот подход требует, чтобы мы уменьшали элементы массива, а затем суммировали результаты в окончательный массив на основе переданной функции редуктора.
Например.
const arrayData = ["ade", "kemi", "bose", "esther", "felele", "ade"];
const arrResponse = arrayData.reduce((uniqeValue, item) =>
uniqeValue.includes(item) ? uniqeValue : [...uniqeValue, item], []);
console.log(arrResponse)
// ["ade", "kemi", "bose", "esther", "felele"]
И мы закончили. Надеюсь это поможет.