Related Topics
Introduction
Html page 1
Html page 2
Html page3
Html page4
HTML Elements and structure
Html page 5
Html page 6
Html page 7
HTML Headings and Paragraphs
Html page 8
Html page 9
Html page 10
HTML Lists and Tables
Html page 11
Html page 12
Html page 13
HTML Forms and Input Fields
Html page 14
Html page 15
Html page 16
HTML Images and Media
Html page 17
Html page 18
HTML Links and Anchors
Html page 19
Html page 20
Html page 21
HTML Styles and Formatting
Html page 22
HTML Semantic Elements
Html page 23
Html page 24
HTML Attributes
Html page 25
Html page 26
HTML JavaScript Integration
Html page 27
Html page 28
Html page 29
Html page 30
HTML Document and Browser Support
Html page 31
Html page 32
HTML5 New Elements and Attributes
Html page 33
Html page 34
Html page 35
Html page 36
HTML Accessibility and Web Standards
Html page 37
Html page 38
Html page 39
HTML Responsive Design and Mobile Devices.
Html page 40
Html page 41
Html page 42
Introduction
Data Structure Page 1
Data Structure Page 2
Data Structure Page 3
Data Structure Page 4
Data Structure Page 5
Data Structure Page 6
Data Structure Page 7
Data Structure Page 8
String
Data Structure Page 9
Data Structure Page 10
Data Structure Page 11
Data Structure Page 12
Data Structure Page 13
Array
Data Structure Page 14
Data Structure Page 15
Data Structure Page 16
Data Structure Page 17
Data Structure Page 18
Linked List
Data Structure Page 19
Data Structure Page 20
Stack
Data Structure Page 21
Data Structure Page 22
Queue
Data Structure Page 23
Data Structure Page 24
Tree
Data Structure Page 25
Data Structure Page 26
Binary Tree
Data Structure Page 27
Data Structure Page 28
Heap
Data Structure Page 29
Data Structure Page 30
Graph
Data Structure Page 31
Data Structure Page 32
Searching Sorting
Data Structure Page 33
Hashing Collision
Data Structure Page 35
Data Structure Page 36

JAVASCRIPT
const person = {
name: 'John',
age: 30,
city: 'New York'
};
const { name, age } = person;
console.log(name); // Output: John
console.log(age); // Output: 30
In this example, the variables name
and age
are assigned the corresponding values from the person
object using object destructuring. This eliminates the need to access the properties using dot notation or square bracket notation.
Function Parameter Extraction: Object destructuring is particularly useful when working with function parameters. It allows you to extract specific values from an object passed as an argument to a function, making the code more readable and self-explanatory.
function greet({ name, age }) {
console.log(`Hello, ${name}! You are ${age} years old.`);
}
const person = {
name: 'John',
age: 30,
city: 'New York'
};
greet(person); // Output: Hello, John! You are 30 years old.
In this example, the greet()
function uses object destructuring in its parameter declaration to extract the name
and age
properties from the object argument. This allows the function to directly access and use those values.
Renaming Properties: Object destructuring also enables you to assign extracted values to variables with different names than the object’s property names. This provides flexibility when working with objects and helps avoid naming conflicts.
const person = {
name: 'John',
age: 30,
city: 'New York'
};
const { name: fullName, age: years } = person;
console.log(fullName); // Output: John
console.log(years); // Output: 30
In this example, the variables fullName
and years
are assigned the values of the name
and age
properties, respectively, but with different variable names. This allows you to provide more descriptive or meaningful variable names in your code.
Overall, object destructuring provides a concise and expressive way to extract values from objects, making the code more readable, reducing repetition, and enhancing the flexibility of working with object properties.
function deepEqual(obj1, obj2) {
if (obj1 === obj2) {
return true;
}
if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {
return false;
}
const keys1 = Object.keys(obj1);
const keys2 = Object.keys(obj2);
if (keys1.length !== keys2.length) {
return false;
}
for (let key of keys1) {
if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {
return false;
}
}
return true;
}
const obj1 = { name: 'John', age: 30 };
const obj2 = { name: 'John', age: 30 };
console.log(deepEqual(obj1, obj2)); // Output: true
In this example, the deepEqual()
function performs a deep comparison of the objects obj1
and obj2
by recursively checking each property and nested object. It returns true
if the objects are deeply equal and false
otherwise.
Stringify and Compare: Another approach is to convert the objects to JSON strings using
JSON.stringify()
and then compare the resulting strings. This approach assumes that the objects do not contain functions or non-serializable values.
const obj1 = { name: 'John', age: 30 };
const obj2 = { name: 'John', age: 30 };
const str1 = JSON.stringify(obj1);
const str2 = JSON.stringify(obj2);
console.log(str1 === str2); // Output: true
In this example, the obj1
and obj2
objects are converted to JSON strings using JSON.stringify()
. The resulting strings (str1
and str2
) can be compared using the ===
operator to determine if the objects are equal.
It’s important to note that comparing objects based on their content can be resource-intensive, especially for large objects or deeply nested objects. Additionally, circular references within objects can cause infinite recursion in the deep equality check approach, so handling circular references requires additional consideration.
In summary, comparing objects in JavaScript typically requires performing a deep equality check or comparing string representations of the objects’ content. The choice of approach depends on the complexity of the objects, the desired level of comparison depth, and the presence of circular references or non-serializable values.
const target = { a: 1, b: 2 };
const source = { b: 3, c: 4 };
// Object.assign()
const mergedObject1 = Object.assign(target, source);
console.log(mergedObject1); // Output: { a: 1, b: 3, c: 4 }
// Spread Operator
const mergedObject2 = { ...target, ...source };
console.log(mergedObject2); // Output: { a: 1, b: 3, c: 4 }
In this example, Object.assign()
modifies the target
object by copying properties from the source
object. The resulting mergedObject1
has the modified properties (b
and c
) in the target
object.
The spread operator, on the other hand, creates a new object mergedObject2
by spreading the properties from both target
and source
. It effectively merges the properties, with the last object’s property value taking precedence.
It’s important to note that both Object.assign()
and the spread operator perform shallow copies and do not deeply clone objects. To achieve a deep copy or deep merge of objects, additional techniques like recursion or libraries are needed.
In summary, while both Object.assign()
and the spread operator can be used to copy or merge objects, they have different syntax and behavior. Object.assign()
modifies the target object and allows merging multiple sources, while the spread operator creates a new object or merges into an existing object without modifying the original objects.
const person = {
firstName: 'John',
lastName: 'Doe',
get fullName() {
return this.firstName + ' ' + this.lastName;
},
set fullName(value) {
const [firstName, lastName] = value.split(' ');
this.firstName = firstName;
this.lastName = lastName;
}
};
console.log(person.fullName); // Output: John Doe
person.fullName = 'Jane Smith';
console.log(person.firstName); // Output: Jane
console.log(person.lastName); // Output: Smith
In this example, the person
object has a fullName
property defined with a getter and a setter method. The getter method retrieves the concatenated value of firstName
and lastName
, while the setter method splits the assigned value and updates the firstName
and lastName
properties accordingly.
Using Class Syntax:
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
get fullName() {
return this._firstName + ' ' + this._lastName;
}
set fullName(value) {
const [firstName, lastName] = value.split(' ');
this._firstName = firstName;
this._lastName = lastName;
}
}
const person = new Person('John', 'Doe');
console.log(person.fullName); // Output: John Doe
person.fullName = 'Jane Smith';
console.log(person.fullName); // Output: Jane Smith
In this example, the Person
class is defined with a constructor and fullName
getter and setter methods. The properties _firstName
and _lastName
are used internally within the class. When accessing or assigning the fullName
property, the getter and setter methods are invoked accordingly.
By using getter and setter methods, you can add logic, validation, or custom behavior when retrieving or assigning values to object properties. It provides control and flexibility over the handling of property access and modification.
const originalObj = {
name: 'John',
age: 30,
address: {
city: 'New York',
country: 'USA'
}
};
const shallowCopyObj = Object.assign({}, originalObj);
In this example, Object.assign()
is used to create a shallow copy of the originalObj
into shallowCopyObj
. The properties name
and age
are directly copied, but the address
property is shallow copied, meaning shallowCopyObj.address
still references the same nested address
object as originalObj.address
. If the nested object is modified, it will affect both originalObj
and shallowCopyObj
.
Deep Copying: Deep copying, as the name suggests, creates a complete and independent copy of an object, including all nested objects and their properties. It creates a new object with new references to all nested objects, ensuring that modifications made to the copied object or its nested objects do not affect the original object.
Here’s an example of deep copying:
function deepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let copy;
if (Array.isArray(obj)) {
copy = [];
for (let i = 0; i < obj.length; i++) {
copy[i] = deepCopy(obj[i]);
}
} else {
copy = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
}
return copy;
}
const originalObj = {
name: 'John',
age: 30,
address: {
city: 'New York',
country: 'USA'
}
};
const deepCopyObj = deepCopy(originalObj);
In this example, the deepCopy()
function recursively creates a deep copy of the originalObj
, ensuring that both the properties and the nested objects are independent copies. Any modifications made to deepCopyObj
or its nested objects will not affect the originalObj
.
Deep copying is more comprehensive but can be more resource-intensive, especially for large objects with multiple levels of nesting. It requires careful consideration of circular references and non-serializable values.
In summary, shallow copying creates a new object that references the same nested objects as the original, while deep copying creates an independent copy of the original object and all nested objects. The choice between shallow and deep copying depends on the specific requirements and characteristics of the objects being copied.




Popular Category
Topics for You
Introduction
Html page 1
Html page 2
Html page3
Html page4
HTML Elements and structure
Html page 5
Html page 6
Html page 7
HTML Headings and Paragraphs
Html page 8
Html page 9
Html page 10
HTML Lists and Tables
Html page 11
Html page 12
Html page 13
HTML Forms and Input Fields
Html page 14
Html page 15
Html page 16
HTML Images and Media
Html page 17
Html page 18
HTML Links and Anchors
Html page 19
Html page 20
Html page 21
HTML Styles and Formatting
Html page 22
HTML Semantic Elements
Html page 23
Html page 24
HTML Attributes
Html page 25
Html page 26
HTML JavaScript Integration
Html page 27
Html page 28
Html page 29
Html page 30
HTML Document and Browser Support
Html page 31
Html page 32
HTML5 New Elements and Attributes
Html page 33
Html page 34
Html page 35
Html page 36
HTML Accessibility and Web Standards
Html page 37
Html page 38
Html page 39
HTML Responsive Design and Mobile Devices.
Html page 40
Html page 41
Html page 42
Introduction
Data Structure Page 1
Data Structure Page 2
Data Structure Page 3
Data Structure Page 4
Data Structure Page 5
Data Structure Page 6
Data Structure Page 7
Data Structure Page 8
String
Data Structure Page 9
Data Structure Page 10
Data Structure Page 11
Data Structure Page 12
Data Structure Page 13
Array
Data Structure Page 14
Data Structure Page 15
Data Structure Page 16
Data Structure Page 17
Data Structure Page 18
Linked List
Data Structure Page 19
Data Structure Page 20
Stack
Data Structure Page 21
Data Structure Page 22
Queue
Data Structure Page 23
Data Structure Page 24
Tree
Data Structure Page 25
Data Structure Page 26
Binary Tree
Data Structure Page 27
Data Structure Page 28
Heap
Data Structure Page 29
Data Structure Page 30
Graph
Data Structure Page 31
Data Structure Page 32
Searching Sorting
Data Structure Page 33
Hashing Collision
Data Structure Page 35
Data Structure Page 36
Go through our study material. Your Job is awaiting.