PL
JavaScript - usuwanie zduplikowanych linii
0
points
Witam! 👋 😊
W tym artykule chciałbym pokazać dwa sposoby usuwania zduplikowanych wierszy z tekstu w JavaScript.
Użyjemy dwóch metod:
filter()
reduce()
1. Przykład oparty na metodzie filter()
W tym rozwiązaniu używam komponentów funkcyjnych.
W tekście użyłem zestawu operacji do usunięcia zduplikowanych wierszy:
split()
dzieli tekst na linie, które przyjmują znak nowej linii w 4 różnych wariantach, co jest podejściem uniwersalnym,filter()
tworzy nową tablicę elementów testowanych za pomocą dostarczonej funkcji,join()
do scalania elementów z powrotem.
Uwaga:
Więcej informacji na temat dzielenia tekstu możecie znaleźć w tym artykule .
// ONLINE-RUNNER:browser;
const newLineExpression = /\r\n|\n\r|\n|\r/g;
const removeDuplicatedLines = (text) => {
return text.split(newLineExpression)
.filter((item, index, array) => array.indexOf(item) === index)
.join('\n');
};
// Przykład użycia:
const text = `a
b
b
a
a
c
c`;
console.log(removeDuplicatedLines(text)); // a
// b
// c
2. Przykład oparty na metodzie reduce()
Podejście to zostało stworzone, aby pokazać, że można uzyskać taki sam efekt, jak w powyższym przykładzie przy użyciu metody reduce()
.
Praktyczny przykład:
// ONLINE-RUNNER:browser;
const newLineExpression = /\r\n|\n\r|\n|\r/g;
const removeDuplicatedLines = (text) => {
const blocker = {}; // zapobiega duplikowaniu linii
return text.split(newLineExpression)
.reduce((result, line) => {
if (blocker.hasOwnProperty(line)) {
return result;
}
blocker[line] = true;
return result + line + '\n';
}, '');
};
// Przykład użycia:
const text = `a
b
b
a
a
c
c`;
console.log(removeDuplicatedLines(text)); // a
// b
// c