Node.js util.isDeepStrictEqual() Method

The “util” module provides ‘utility’ functions that are used for debugging purposes. For accessing those functions we need to call them (by ‘require(‘util’)‘).

The util.isDeepStrictEqual() (Added in v9.0.0) method is an inbuilt application programming interface of the util module which is an exported type function that tests the deep equality of two values that is, between the actual (value1) and expected (value2) parameters. Deep equality is a method that helps to evaluate the enumerable “own” properties of child objects recursively by a few rules. 

Syntax:

const util = require('util');
util.isDeepStrictEqual(val1, val2);

Parameters: This function accepts two parameters as mentioned above and described below:

  • val1 <any>: Any variable, Class, Function, Object, or JavaScript primitive.



  • val2 <any>: Any variable, Class, Function, Object, or JavaScript primitive.

Return Value <boolean>: If value1 and value2 are deemed equal then returns true, otherwise returns false.

Example 1: Filename: index.js

filter_none

edit
close

play_arrow

link
brightness_4
code

      
// Node.js syntax to demonstrate the 
// util.isDeepStrictEqual() method
  
// Importing util library
const util = require('util');
  
// Creating object1
const object1 = {
    alfa: "beta",
    romeo: [10, 20]
};
  
// Creating object2
const object2 = {
    alfa: "beta",
    romeo: [10, 20]
};
  
// Returns false
console.log("1.>", object1 == object2)
  
// Returns true
console.log("2.>", util
    .isDeepStrictEqual(object1, object2))
  
// Creating a fake date
const wrongDateType = {};
  
// Comparing wrongDateType with correct date
console.log("3.>", util.isDeepStrictEqual(
            wrongDateType, Date.prototype));
  
const anObject = {};
  
// Prototype is not same
console.log("4.>", util.isDeepStrictEqual(
            anObject, wrongDateType));
// Returns false
  
// Creating new date
const newDate = new Date();
  
// Comparing Date formats
console.log("5.>", util.isDeepStrictEqual(
            newDate, wrongDateType));
// Returns false
  
const weakMapOne = new WeakMap();
const weakMapTwo = new WeakMap([[{}, {}]]);
  
// Comparing two weakMaps  
console.log("6.>", util.isDeepStrictEqual(
            weakMapOne, weakMapTwo));
// Returns true

chevron_right


Run index.js file using the following command:

node index.js

Output:

1.> false
2.> true
3.> true
4.> true
5.> false
6.> true

Example 2: Filename: index.js

filter_none

edit
close

play_arrow

link
brightness_4
code

// Node.js syntax to demonstrate the
// util.isDeepStrictEqual() method
  
// Importing util library
const util = require('util');
  
// String and integer are compared
// wrong 1 !== '1'.
console.log("1.>", util
    .isDeepStrictEqual({ a: 1 }, { a: '1' }));
// Returns false 
  
// Comparing Not a Number with Not a Number
console.log("2.>", util.isDeepStrictEqual(NaN, NaN));
// Returns true
  
// Unwrapped numbers are different
console.log("3.>", util
    .isDeepStrictEqual(Object(1), Object(2)));
// Returns false
  
// Directly importing isDeepStrictEqual method
const { isDeepStrictEqual } = require('util');
  
// Unwrapped strings are same
console.log("4.>", isDeepStrictEqual(
        Object('alfa'), Object('alfa')));
// Returns true
  
// Comparing both negative values  
console.log("5.>", isDeepStrictEqual(-0, -0));
// Returns true
  
// Same Value Comparison with different sign
console.log("6.>", isDeepStrictEqual(0, -0));
// Returns false

chevron_right


Run index.js file using the following command:

node index.js

Output:

1.> false
2.> true
3.> false
4.> true
5.> true
6.> false

Reference: https://nodejs.org/api/util.html#util_util_isdeepstrictequal_val1_val2




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.