Галоўная > Прасунуты аднарадковы код на JavaScript, які можа вам спатрэбіцца

Прасунуты аднарадковы код на JavaScript, які можа вам спатрэбіцца

js

1. Выдаленне falsy-значэнняў з масіва.

text
1const truthyValues = arr.filter(Boolean);

Напрыклад:

text
1const arr = [true, false, 0, 1, '', 'hello', null];
2const truthyValues = arr.filter(Boolean);
3
4// [true, 1, 'hello']

2. Пераўтварэнне масіву радкоў ў масіў лічбаў

text
1const strArr = ['1', '2', '3', '4', '5', '6'];
2
3const numArr = strArr.map(Number);
4
5console.log(numArr);
6// [1, 2, 3, 4, 5, 6]

3. Выдаленне дубляў з массіва

text
1const uniqueValues = [...new Set(arr)];

Выкарыстоўваем new Set, каб хутка вызначыць унікальныя значэнні, і ператвараем Set зноў у масіў.

Напрыклад:

text
1const arr = [1, 2, 2, 3, 4, 6, 6, 6, 7, 9];
2const uniqueValues = [...new Set(arr)];
3
4// [1, 2, 3, 4, 6, 7, 9]

4. Групоўка масіву па ўласцівасцях аб'екта

Калі вам спатрэбіцца групоўка масіву па асобным ўласцівасцям аб'ектаў, то можна зрабіць так:

text
1const groupBy = (arr, groupFn) =>
2  arr.reduce(
3    (groupedAcc, obj) => ({
4      ...groupedAcc,
5      [groupFn(obj)]: [...(groupedAcc[groupFn(obj)] || []), obj],
6    }),
7    {}
8  );
9
10const people = [
11  { name: 'Matt' },
12  { name: 'Sam' },
13  { name: 'John' },
14  { name: 'Mac' },
15];
16const groupedByNameLength = groupBy(people, (person) => person.name.length);
17
18/*
19{
20   3: [{name: 'Sam'}, {name: 'Mac'}],
21   4: [{name: 'Matt'}, {name: 'John'}]
22}
23*/

5. Стварэнне выпадковага UUID

UUID (universally unique identifier) - сусветна унікальны ідэнтыфікатар. UUID - гэта 128-бітнае значэнне, якое дастаткова унікальна ўнікальна ідэнтыфікуе аб'ект або сутнасць у Інтэрнэце.

text
1const generateRandomUUID = (a) =>
2  a
3    ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)
4    : ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(
5        /[018]/g,
6        generateRandomUUID
7      );
8
9console.log(generateRandomUUID()); 
10// f138f635-acbd-4f78-9be5-ca3198c4cf34
11
12console.log(generateRandomUUID()); 
13// 8935bb0d-6503-441f-bb25-7bc685b5b5bc

6. Пераўтварэнне RGB ў Hex

text
1const rgbToHex = (r, g, b) =>
2  "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
3
4rgbToHex(0, 51, 255); 
5// #0033ff

7. Стварэнне масіву даўжынёй n з дапамогай spread-аператара і Array.from

text
1const n = 6;
2const arr = [...Array.from({ length: n }, (v, index) => index)];
3
4console.log(arr) // [ 0, 1, 2, 3, 4. 5];

8. Паслядоўна выконваемыя промісы

text
1const urls = ['http://example.by/1', 'http://example.by/2', 'http://example.by/3', 'http://example.by/4'];
2
3const sequencedRequests = urls.reduce(
4    (acc, url) => acc
5        .then(results => fetch(url)
6            .then(results => results.json())
7            .then(values => results.concat(values))
8        ), Promise.resolve([]));
9
10sequencedRequests.then(result => console.log(result));
loveJS, 2023-08-03
Каментары

    (Каб даслаць каментар залагуйцеся ў свой уліковы запіс)