JavaScript Object Sets

Sets are a data structure that stores unique values of any type.

The traditional sets in JavaScript can only store primitive values and object references, there's a common need to create sets of objects based on some unique property or criteria.

This is where object sets come into play.

Object sets allow developers to store and manipulate unique objects based on custom criteria.

In this chapter we'll delve into object sets in JavaScript, exploring how they're created and utilized in various scenarios.

Creating Object Sets

To create an object set in JavaScript, we typically utilize a combination of objects and the Set data structure provided by JavaScript.

We use this structure to store references to objects based on some unique property or criteria.

Let's consider an example where we want to create a set of objects based on a unique identifier id.


let objectSet = new Set();

function addObjectToSet(object){ 
  objectSet.add(object);
}

function removeObjectFromSet(object){ 
  objectSet.delete(object);
}

// Example usage
let obj1 = {id: 0, name: "Object 1"}
let obj2 = {id: 1, name: "Object 2"}
  
addObjectToSet(obj1)
removeObjectFromSet(obj2)
            

Example


let objectSet = new Set();

function addObjectToSet(object){ 
  objectSet.add(object);
}

function removeObjectFromSet(object){ 
  objectSet.delete(object);
}

// Example usage
let obj1 = {id: 0, name: "Object 1"}
let obj2 = {id: 1, name: "Object 2"}
  
addObjectToSet(obj1)
removeObjectFromSet(obj2)
console.log(Array.from(objectSet));

Checking for Object Existence

One of the primary operations performed on object sets is checking whether a specific object exists within the set.

We can accomplish this by iterating over the set and comparing each object based on the unique property.


function objectExistsInSet(object){ 
  for(const item of objectSet){ 
    if (item.id === object.id){ 
       return true;
    }
  }
  return false;
}

// Example usage
let obj3 = {id: 3, name: "Object 3"}
  
console.log(objectExistsInSet(obj3)); // Output: false
addObjectToSet(object3)

console.log(objectExistsInSet(obj3)); // Output: true
addObjectToSet(object2)

Example

let objectSet = new Set();
function objectExistsInSet(object){ 
  for(const item of objectSet){ 
    if (item.id === object.id){ 
        return true;
    }
  }
  return false;
}

function addObjectToSet(object){ 
  objectSet.add(object);
}
// Example usage
let obj3 = {id: 3, name: "Object 3"}
  
console.log(objectExistsInSet(obj3)); // Output: false
addObjectToSet(obj3)

console.log(objectExistsInSet(obj3)); // Output: true
  

Iterating Over Object Sets

Similar to iterating over traditional sets, we can iterate over object sets using methods like forEach()or the for...ofloops.

This allows us to perform operations on each object stored in the set.


function printSetContents(){ 
  objectSet.forEach(object => { 
    console.log(object);
  })
}

// Example usage
printSetContents();
            

Example

let objectSet = new Set();
let obj1 = {id: 0, name: "Object 1"}
let obj2 = {id: 1, name: "Object 2"}
let obj3 = {id: 3, name: "Object 3"}

function addObjectToSet(object){ 
  objectSet.add(object);
}

addObjectToSet(obj1);
addObjectToSet(obj2);
addObjectToSet(obj3);

function printSetContents(){ 
  objectSet.forEach(object => { 
    console.log(object);
  })
}

// Example usage
printSetContents();
  

Removing Objects from Object Sets

Removing objects from object sets is a common operation and can be achieved using the delete()method provided by the Setdata structure.


removeObjectFromSet(obj1);

// Example usage
printSetContents();

            

Example

let objectSet = new Set();
let obj1 = {id: 0, name: "Object 1"}
let obj2 = {id: 1, name: "Object 2"}
let obj3 = {id: 3, name: "Object 3"}

function addObjectToSet(object){ 
  objectSet.add(object);
}

function removeObjectFromSet(object){ 
  objectSet.delete(object);
}

addObjectToSet(obj1);
addObjectToSet(obj2);
addObjectToSet(obj3);

function printSetContents(){ 
  objectSet.forEach(object => { 
    console.log(object);
  })
}

// Example usage
printSetContents();
removeObjectFromSet(obj1);
printSetContents();

  

Object sets in JavaScript provide a powerful way to manage collections of objects based on custom criteria.

By leveraging the Setdata structure and defining unique properties or criteria for objects, developers can efficiently store, manipulate, and iterate over sets of objects.