Mapped Array Symmetric Difference

JavaScriptJavaScriptBeginner
Practice Now

This tutorial is from open-source community. Access the source code

Introduction

In this lab, we will dive into the concept of symmetric difference and how it can be implemented in JavaScript using the symmetricDifferenceBy() function. We will explore how this function can be used to find the unique values between two arrays after applying a provided function to each element of both arrays. This lab is designed to help you better understand this powerful JavaScript method and how it can be used in your own projects.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("`JavaScript`")) -.-> javascript/BasicConceptsGroup(["`Basic Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/AdvancedConceptsGroup(["`Advanced Concepts`"]) javascript/BasicConceptsGroup -.-> javascript/variables("`Variables`") javascript/BasicConceptsGroup -.-> javascript/data_types("`Data Types`") javascript/BasicConceptsGroup -.-> javascript/arith_ops("`Arithmetic Operators`") javascript/BasicConceptsGroup -.-> javascript/comp_ops("`Comparison Operators`") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("`Higher-Order Functions`") javascript/AdvancedConceptsGroup -.-> javascript/destr_assign("`Destructuring Assignment`") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("`Spread and Rest Operators`") subgraph Lab Skills javascript/variables -.-> lab-28487{{"`Mapped Array Symmetric Difference`"}} javascript/data_types -.-> lab-28487{{"`Mapped Array Symmetric Difference`"}} javascript/arith_ops -.-> lab-28487{{"`Mapped Array Symmetric Difference`"}} javascript/comp_ops -.-> lab-28487{{"`Mapped Array Symmetric Difference`"}} javascript/higher_funcs -.-> lab-28487{{"`Mapped Array Symmetric Difference`"}} javascript/destr_assign -.-> lab-28487{{"`Mapped Array Symmetric Difference`"}} javascript/spread_rest -.-> lab-28487{{"`Mapped Array Symmetric Difference`"}} end

Mapped Array Symmetric Difference

To get started with coding, open the Terminal/SSH and type node.

This function returns the symmetric difference between two arrays, after applying the provided function to each element of both arrays. Here's how it works:

  • Create a Set from each array to get the unique values of each one after applying fn to them.
  • Use Array.prototype.filter() on each of them to only keep values not contained in the other.

Here's the code for the symmetricDifferenceBy function:

const symmetricDifferenceBy = (a, b, fn) => {
  const sA = new Set(a.map((v) => fn(v))),
    sB = new Set(b.map((v) => fn(v)));
  return [
    ...a.filter((x) => !sB.has(fn(x))),
    ...b.filter((x) => !sA.has(fn(x)))
  ];
};

You can use symmetricDifferenceBy like this:

symmetricDifferenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); // [ 1.2, 3.4 ]
symmetricDifferenceBy(
  [{ id: 1 }, { id: 2 }, { id: 3 }],
  [{ id: 1 }, { id: 2 }, { id: 4 }],
  (i) => i.id
);
// [{ id: 3 }, { id: 4 }]

Summary

Congratulations! You have completed the Mapped Array Symmetric Difference lab. You can practice more labs in LabEx to improve your skills.

Other JavaScript Tutorials you may like