Add 6 new snippets

This commit is contained in:
Chalarangelo
2022-04-02 18:03:16 +03:00
parent 003b4b21d0
commit 849d691679
6 changed files with 125 additions and 0 deletions

21
snippets/callOrReturn.md Normal file
View File

@ -0,0 +1,21 @@
---
title: Call or return
tags: function
expertise: beginner
firstSeen: 2022-04-04T05:00:00-04:00
---
Calls the argument if it's a function, otherwise returns it.
- Use the `typeof` operator to check if the given argument is a function.
- If it is, use the spread operator (`...`) to call it with the rest of the given arguments. Otherwise, return it.
```js
const callOrReturn = (fn, ...args) =>
typeof fn === 'function' ? fn(...args) : fn;
```
```js
callOrReturn(x => x + 1, 1); // 2
callOrReturn(1, 1); // 1
```

21
snippets/commonKeys.md Normal file
View File

@ -0,0 +1,21 @@
---
title: Common keys
tags: object
expertise: intermediate
firstSeen: 2022-04-23T05:00:00-04:00
---
Finds the common keys between two objects.
- Use `Object.keys()` to get the keys of the first object.
- Use `Object.prototype.hasOwnProperty()` to check if the second object has a key that's in the first object.
- Use `Array.prototype.filter()` to filter out keys that aren't in both objects.
```js
const commonKeys = (obj1, obj2) =>
Object.keys(obj1).filter(key => obj2.hasOwnProperty(key));
```
```js
commonKeys({ a: 1, b: 2 }, { a: 2, c: 1 }); // ['a']
```

19
snippets/compactJoin.md Normal file
View File

@ -0,0 +1,19 @@
---
title: Compact and join array
tags: array
expertise: intermediate
firstSeen: 2022-04-08T05:00:00-04:00
---
Removes falsy values from an array and combines the remaining values into a string.
- Use `Array.prototype.filter()` to filter out falsy values (`false`, `null`, `0`, `""`, `undefined`, and `NaN`).
- Use `Array.prototype.join()` to join the remaining values into a string.
```js
const compactJoin = (arr, delim = ',') => arr.filter(Boolean).join(delim);
```
```js
compactJoin(['a', '', 'b', 'c']); // 'a,b,c'
```

18
snippets/flags.md Normal file
View File

@ -0,0 +1,18 @@
---
title: Array to flags object
tags: array,object
expertise: intermediate
firstSeen: 2022-04-12T05:00:00-04:00
---
Converts an array of strings into an object mapping to true.
- Use `Array.prototype.reduce()` to convert the array into an object, where each array value is used as a key whose value is set to `true`.
```js
const flags = arr => arr.reduce((acc, str) => ({...acc, [str]: true }), {});
```
```js
flags(['red', 'green']); // { red: true, green: true }
```

23
snippets/toggleElement.md Normal file
View File

@ -0,0 +1,23 @@
---
title: Toggle element in array
tags: array
expertise: beginner
firstSeen: 2022-04-15T05:00:00-04:00
---
Removes an element from an array if it's included in the array, or pushes it to the array if it isn't.
- Use `Array.prototype.includes()` to check if the given element is in the array.
- Use `Array.prototype.filter()` to remove the element if it's in the array.
- Use the spread operator (`...`) to push the element if it's not in the array.
```js
const toggleElement = (arr, val) =>
arr.includes(val) ? arr.filter(el => el !== val) : [...arr, val];
```
```js
toggleElement([1, 2, 3], 2); // [1, 3]
toggleElement([1, 2, 3], 4); // [1, 2, 3, 4]
```

23
snippets/unwind.md Normal file
View File

@ -0,0 +1,23 @@
---
title: Unwind object
tags: object
expertise: intermediate
firstSeen: 2022-04-18T05:00:00-04:00
---
Produces an array of objects from an object and one of its array-valued properties.
- Use object destructuring to exclude the key-value pair for the specified `key` from the object.
- Use `Array.prototype.map()` for the values of the given `key` to create an array of objects.
- Each object contains the original object's values, except for `key` which is mapped to its individual values.
```js
const unwind = (key, obj) => {
const { [key]: _, ...rest } = obj;
return obj[key].map(val => ({ ...rest, [key]: val }));
};
```
```js
unwind('b', { a: true, b: [1, 2] }); // [{ a: true, b: 1 }, { a: true, b: 2 }]
```