JavaScript Tips and Tricks.
Objects
Get Lenght of Object
const arr = [1, 2, 3];
console.log(arr.length);
const obj = {
a: 1,
b: 2,
c: 3
};
console.log(obj.length);
let length = Object.keys(obj);
console.log(length);
length = Object.keys(obj).length;
console.log(length);
Iterate over an Object
const obj = {
FirstName: "Jean",
LastName: "Snyman",
Age: 35
};
for (let u in obj) {
if (obj.hasOwnProperty(u)) {
console.log(u, obj[u]);
}
}
for (let u of Object.keys(obj)) {
console.log(u, obj[u]);
}
Object.entries(obj).forEach(([key, value]) => console.log(key, value));
Convert Object to Array
const obj = {
FirstName: "Jean",
LastName: "Snyman",
Age: 35
};
const result = Object.keys(obj).map(key => [key, obj[key]]);
console.log(result);
console.log(Object.entries(obj));
Check if property is in Object
const user = {
FirstName: "Jean",
LastName: "Snyman",
Age: 35,
address: {
street: "Main Road",
city: "Cape Town",
PostalCode: "8000"
}
};
const property = user.address.hasOwnProperty("PostalCode");
console.log(property);
Prevent Object Properties from Being Added, Deleted or Changed
const user = {
FirstName: "Jean",
LastName: "Snyman",
Age: 35
};
console.log(Object.getOwnPropertyDescriptors(user));
Object.preventExtensions(user);
Object.seal(user);
Object.freeze(user);
Merge two or more Objects (Object.assign & Object spread)
const defaultUser = {
FirstName: "Jean",
LastName: "Snyman",
Age: 35
};
const additionalUserProps = {
Email: "jeans@gmail.com",
Age: 40
};
const user = Object.assign(defaultUser, additionalUserProps);
console.log(user);
const user2 = { ...defaultUser, ...additionalUserProps };
console.log(user2);
Computed Object Properties
let state = {};
const key = "name";
const value = "This is the value of the prop";
state[key] = value;
const func = () => {
console.log("Running a function");
};
state["func"] = func;
console.log(state);
state.func();
Delete or Filter Property of Object
const user = {
firstName: "Jean",
lastName: "Snyman",
age: 35
};
function filterObj(obj, prop) {
let filteredObj = {};
Object.keys(user)
.filter(k => k !== prop)
.map(key => (filteredObj[key] = obj[key]));
return filteredObj;
}
console.log(filterObj(user, "firstName"));
Get All Values in Object
const user = {
firstName: "Jean",
lastName: "Snyman",
age: 35
};
console.log(Object.values(user));
Arrays
Shollow Copy/Clone Array
const fruits = ["apples", "bananas"];
let newFruits = fruits.slice();
newFruits.push("cherry");
console.log(fruits);
newFruits = [...fruits, "pear"];
console.log(newFruits);
Get Random Element from Array
const ages = [12, 32, 45, 78, 3, 55, 9];
let randomNumber = ages[Math.round(Math.random() * ages.length)];
console.log(randomNumber);
Remove falsy values from Array
const temps = [12, 32, 45, 78, 3, undefined, 9, 0, NaN, ""];
const newTemp = temps.filter(temp => temp);
console.log(newTemp);
Remove items from Array
const nums = [12, 32, 45, 78, 3];
function removeItems(arr, fn) {
return arr.filter(fn).map(el => {
arr.splice(arr.indexOf(el), 1);
return el;
});
}
let res = removeItems(nums, num => num > 32);
console.log(res);
console.log(nums);
Fill Array with values
const phoneNumber = "555-525-5248";
let newNumber = phoneNumber
.split("")
.fill("*", 0, 8)
.join("");
console.log(newNumber);
Find Certain Element / Index / Indices of Array
const people = ["Jean", "John", "James", "John"];
function findIndexAll(arr, value) {
let indices = [];
arr.forEach((el, i) => el === value && indices.push(i));
return indices;
}
let res = findIndexAll(people, "John");
console.log(res);
Make Range of Numbers within Array
const range = Array.from({ length: 10 }, (value, index) => index + 1);
console.log(range);
Get Unique Values in Array ( Filter or Set)
const users = ["Jean", "John", "John", "James", "John"];
const newUsers = users.filter((name, index, array) =>
array.indexOf(name) === index ? name : ""
);
console.log(newUsers);
const set = [...new Set(users)];
console.log(set);
Find Difference Between Two Arrays ( Filter and Set)
const users = ["Jean", "John", "John", "James", "John"];
const users2 = ["Jean", "Milan", "John", "Jones", "John", "Jones"];
const result = [...new Set(users2)].filter(el => !users.includes(el));
console.log(result);
Get Last Item / Everything Before last Item in Array
const users = ["Jean", "John", "John", "James", "John"];
const lastElement = users[users.length - 1];
console.log(lastElement);
const beforeLastElement = users.slice(0, -1);
console.log(beforeLastElement);
Strings
Iterate over a string
const str = "Hello world";
for (let s of str) {
console.log(s);
}
Capitalize first word of string
const capitalize = ([first, ...rest]) =>
`${first.toUpperCase()}${rest.join("")}`;
const result = capitalize("hello world");
console.log(result);
Capitalize every word of string
const capitalizeWords = str => {
return str
.split(" ")
.map(word => `${word[0].toUpperCase()}${word.slice(1)}`)
.join(" ");
};
const result = capitalizeWords("hello world, it's a nice day");
console.log(result);
Numbers And Math Operations
Change Length of Decimal
let num = Number((1.234).toFixed(2));
console.log(num);
Round Decimals to Integers
let num = Math.floor(1.2345);
console.log(num);
let num2 = Math.ceil(1.2345);
console.log(num2);
let num3 = Math.round(1.49);
console.log(num3);
let num4 = Math.round(1.5);
console.log(num4);
General
Private Data using IIFEs or Block Scope
var getUserdata = (() => {
let name = "John";
let email = "johan@gmail.com";
let password = "3kj3n432423kj";
return { name, email };
})();
getUserdata;
{
let name = "John";
let email = "johan@gmail.com";
let password = "3kj3n432423kj";
const sayHi = () => {
return `Hi, ${name}`
}
var result = {
sayHi
}
}
console.log(result.sayHi());
Array Destructuring
const nums = [1,2,3,4,5,6];
const [one, two, three] = nums;
console.log(one);
console.log(two);
console.log(three);
let name = 'doug@gmail.com';
let email = 'doug';
[ email, username ] = [name, email];
console.log(email);
console.log(username);