JavaScript/TypeScript Code Snippets
1. Array Shuffle:
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
2. Deep Object Comparison:
function deepEqual(object1, object2) {
if (object1 === object2) return true;
if (
typeof object1 !== "object" ||
object1 === null ||
typeof object2 !== "object" ||
object2 === null
) {
return false;
}
const keys1 = Object.keys(object1);
const keys2 = Object.keys(object2);
if (keys1.length !== keys2.length) {
return false;
}
for (const key of keys1) {
if (!keys2.includes(key) || !deepEqual(object1[key], object2[key])) {
return false;
}
}
return true;
}
3. Debounce Function:
function debounce(func, wait) {
let timeout;
return function () {
const context = this;
const args = arguments;
clearTimeout(timeout);
timeout = setTimeout(() => {
func.apply(context, args);
}, wait);
};
}
4. Throttle Function:
function throttle(func, limit) {
let lastFunc;
let lastRan;
return function () {
const context = this;
const args = arguments;
if (!lastRan) {
func.apply(context, args);
lastRan = Date.now();
} else {
clearTimeout(lastFunc);
lastFunc = setTimeout(() => {
if (Date.now() - lastRan >= limit) {
func.apply(context, args);
lastRan = Date.now();
}
}, limit - (Date.now() - lastRan));
}
};
}
5. Array Chunk:
function chunkArray(array, size) {
const chunkedArray = [];
for (let i = 0; i < array.length; i += size) {
chunkedArray.push(array.slice(i, i + size));
}
return chunkedArray;
}
6. Type Safe Object Pick:
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
7. Type Safe Object Omit:
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
These snippets provide a starting point for writing clean and efficient JavaScript/TypeScript code. Remember to adapt them to your specific needs and always test them thoroughly.
- Log in to post comments