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()
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 .
xxxxxxxxxx
1
const newLineExpression = /\r\n|\n\r|\n|\r/g;
2
3
const removeDuplicatedLines = (text) => {
4
return text.split(newLineExpression)
5
.filter((item, index, array) => array.indexOf(item) === index)
6
.join('\n');
7
};
8
9
// Przykład użycia:
10
11
const text = `a
12
b
13
b
14
a
15
a
16
c
17
c`;
18
19
console.log(removeDuplicatedLines(text)); // a
20
// b
21
// c
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:
xxxxxxxxxx
1
const newLineExpression = /\r\n|\n\r|\n|\r/g;
2
3
const removeDuplicatedLines = (text) => {
4
const blocker = {}; // zapobiega duplikowaniu linii
5
return text.split(newLineExpression)
6
.reduce((result, line) => {
7
if (blocker.hasOwnProperty(line)) {
8
return result;
9
}
10
blocker[line] = true;
11
return result + line + '\n';
12
}, '');
13
};
14
15
// Przykład użycia:
16
17
const text = `a
18
b
19
b
20
a
21
a
22
c
23
c`;
24
25
console.log(removeDuplicatedLines(text)); // a
26
// b
27
// c