Open In App

How to check a given string is an anagram of another string in JavaScript ?

Last Updated : 18 Jul, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will learn how to check a given string is an anagram of another string in JavaScript. Before that, we should learn what is an anagram.

An anagram is a word or sentence, which usually contains all the original letters exactly once, in order to arrange the letters of a different term or phrase. Some of the examples are given below:

  • evil = vile
  • a gentleman = elegant man
  • eleven plus two = twelve plus one

There are many approaches through which we can compare a string as an anagram of another string:

Approach 1: Using split(), sort(), and join() Methods

In this article, we will use in-built functions such as split(), sort(), and join() to check if a given string is an anagram of another string in JavaScript.

Example:

Javascript




function checkAnagram(a, b) {
 
    // Not of same length, can't be Anagram
    if (a.length !== b.length) {
        return false;
    }
 
    // Inbuilt functions to rearrange the string
    let str1 = a.split('').sort().join('');
    let str2 = b.split('').sort().join('');
 
    let result = (str1 === str2);
    return result;
}
 
// Checking the output
console.log(checkAnagram('abc', 'cba'));


Output

true


Approach 2: Using for loop

In this article, we will the javascript for loop to check if a given string is an anagram of another string in JavaScript.

Example:

Javascript




function checkAnagram(a, b) {
    let array = {};
    if (a === b) {
        return true;
    }
    if (a.length !== b.length) {
        return false;
    }
    let minCharCode = Math.min(getMinCharCode(a),
                               getMinCharCode(b));
 
    for (let i = 0; i < a.length; i++) {
        let res = a.charCodeAt(i) - minCharCode;
        array[res] = (array[res] || 0) + 1;
    }
 
    for (let j = 0; j < b.length; j++) {
        let res = b.charCodeAt(j) - minCharCode;
        if (!array[res]) {
            return false;
        }
        array[res]--;
    }
    return true;
}
 
function getMinCharCode(str) {
    let minCharCode = Infinity;
    for (let i = 0; i < str.length; i++) {
        let charCode = str.charCodeAt(i);
        if (charCode < minCharCode) {
            minCharCode = charCode;
        }
    }
    return minCharCode;
}
 
console.log(checkAnagram('abc', 'cba'));


Output

true




Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads