เริ่มต้นเรื่องจาก JSON เจสันคือรูปแบบของข้อมูลที่จะเก็บข้อมูลแบบเป็น Key กับ Value สามารถหาอ่านเพิ่มเติมได้เพราะนั้นไม่ใช้ประเด่นหลักของ ทำแบบนี้ก็ได้หรอ [chapter1] สมมติๆ ว่าถ้าต้องการจะเช็คว่าข้อมูลเท่าหรือไม่เช่น

let data1 = {
    key: 'name'
}

let data2 = {
    key: 'name'
}

if (data1 === data2) {
    console.log(true)
} else {
    console.log(false)
}

ความเป็นจริงแล้วมันควรจะเท่ากันซิเป็นผลที่ได้กันเป็น FALSE ซะงัน โอเคละพอจะเข้าว่าข้อมูลเป็นแบบ JSON Object คงเอามาเท่ากับกันแบบนี้ไม่ได้งั้นลองอีกวิธี

if (data1.key === data2.key) {
    console.log(true)
} else {
    console.log(false)
}

Ok ได้ค่าเป็นเท่ากันแล้ว แต่เดี่ยวก็ก่อน ถ้ามีข้อมูล JSON ที่ซับซ่อนกว่านี้ต้องมาเทียบกันคีย์ต่อเลยหรอ? คำตอบคือใช่ แต่เราคงไม่ทำกันแบบนั้น 555 ก็แปลงให้มันเป็น String ซะเลยสิแบบนี้

if (JSON.stringify(data1) === JSON.stringify(data2)) {
    console.log(true)
} else {
    console.log(false)
}

ทำแบบนี้มันอาจจะได้แต่รู้สึกว่ามันยังไม่คูล มีอีกวิธีมานำเสนอด้วยการใช้ hashing คือถ้าข้อมูลที่มีค่าเท่ากันแล้ว hash ด้วยฟังก์ชันเดียวกันค่า hash ก็จะเท่ากันเป็นหลักการของการ Check Sum แหละมั้ง ดังนี้

const crypto = require('crypto')

let data1 = {
    key: 'name'
}

let data2 = {
    key: 'name'
}

var hash1 = crypto.createHash('md5').update(JSON.stringify(data1)).digest('hex');
var hash2 = crypto.createHash('md5').update(JSON.stringify(data2)).digest('hex');

console.log(hash1)
console.log(hash2)
//cbe3a5e81043204e466e7825cb9868bc
//cbe3a5e81043204e466e7825cb9868bc

md5 ก็เป็น hash function ทีทุกคนน่าจะรู้จักและนอกจาก md5 ก็มีฟังก์สำหรับ hash มากมายสามารถหาอ่านเพิ่มเติมได้ครับ ทำแบบนี้ก็ได้หรอ [chapter1] จบเท่านี้ครับ