Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk membandingkan dua objek dalam JavaScript untuk menentukan sama ada objek pertama mengandungi nilai harta yang sama dengan objek kedua?

Bagaimana untuk membandingkan dua objek dalam JavaScript untuk menentukan sama ada objek pertama mengandungi nilai harta yang sama dengan objek kedua?

王林
王林ke hadapan
2023-08-24 21:09:02980semak imbas

如何在 JavaScript 中比较两个对象以确定第一个对象是否包含与第二个对象相同的属性值?

Dalam JavaScript, objek mengandungi pelbagai sifat dan kaedah. Untuk setiap atribut, ia mengandungi nilai. Kita juga perlu membandingkan nilai sifat untuk membandingkan antara dua objek.

Di sini kita akan belajar untuk menyemak sama ada objek pertama mengandungi semua sifat yang terkandung dalam objek kedua dan membandingkan nilai setiap harta.

Bandingkan nilai atribut objek satu demi satu

Cara paling mudah ialah menyemak sama ada objek pertama mengandungi setiap sifat objek kedua. Jika objek pertama mengandungi harta, nilai kedua-duanya dibandingkan.

Ini bermakna kami akan membandingkan semua sifat satu persatu dalam kaedah ini.

Tatabahasa

Pengguna boleh mengikut sintaks berikut untuk menyemak sama ada objek pertama mengandungi semua sifat objek kedua yang mempunyai nilai yang sama dalam JavaScript.

if (obj1.prop1 === obj2.prop2 && obj1.prop2 === obj.prop2) {
   // obj1 contains the all properties of obj2 with equivalent values
} else {
   // property values are mismatched
}

Dalam sintaks di atas, obj1 dan obj2 ialah objek berbeza yang mengandungi sifat berbeza.

Contoh

Dalam contoh di bawah, kami telah mencipta objek obj1 dan obj2. Kami menggunakan pernyataan bersyarat if-else untuk membandingkan semua nilai atribut objek2 dengan nilai atribut objek1.

<html>
<body>
   <h2>Using the <i>strict equality</i> operator to compare object properties.</h2>
   <div id = "output"> </div>
   <script>
      let output = document.getElementById('output');
      let obj1 = {
         prop1: "Value1",
         prop2: "Value2",
         prop3: 40,
         prop4: false
      }
      let obj2 = {
         prop1: "Value1",
         prop3: 40
      }
      if (obj1.prop1 === obj2.prop2 && obj1.prop3 === obj.prop3) {
         output.innerHTML += "The obj1 contains all properties of obj2 with the equivalent values.";
      } else {
         output.innerHTML += "The properties or property values of obj1 and obj2 are mismatched.";
      }
   </script>
</body>
</html>

Gunakan gelung forEach untuk membandingkan sifat objek kedua dengan sifat objek pertama

Dalam kaedah ini, kami akan menggunakan JavaScript forEach gelung untuk mengulangi semua kekunci objek kedua dan memadankan nilainya dengan nilai sifat yang setara dengan objek pertama. Kita boleh mendapatkan semua kunci objek dalam tatasusunan. Selepas itu, kita boleh menggunakan forEach untuk menggelung melalui tatasusunan kunci.

Tatabahasa

Pengguna boleh menggunakan gelung forEach mengikut sintaks berikut untuk menentukan sama ada objek pertama mengandungi nilai sifat yang setara dengan objek kedua.

Object.keys(student2).forEach((key) => {
   if (student2[key] !== student1[key]) {
      isSame = false;
   }
})

Dalam sintaks di atas, kami membandingkan nilai setiap kunci objek student2 dengan objek student1.

Contoh

Dalam contoh di bawah, kami telah mencipta objek student1 dan student2 yang mengandungi sifat yang berbeza. Selepas itu, kami menggunakan kaedah Object.keys() untuk mendapatkan semua kekunci objek student2. Seterusnya, kami menggunakan forEach untuk menggelungkan semua kekunci objek Student2.

Kami membandingkan nilai utama objek pelajar2 dan objek pelajar1. Dalam output, kita boleh melihat bahawa ia mencetak "Atribut objek dan nilai tidak sepadan" kerana objek Student1 tidak mengandungi atribut tahun.

<html>
<body>
   <h3>Using the <i>forEach loop</i> to compare the first object's property values with the second object's property value. </h3>
   <div id = "output"></div>
   <script>
      let output = document.getElementById('output');
      let student1 = {
         id: "13",
         name: "Shubham",
         age: 12,
         std: 6
      }
      let student2 = {
         id: "13",
         name: "shubham",
         year: 12,
      }
      let isSame = true;
         Object.keys(student2).forEach((key) => {
            if (student2[key] !== student1[key]) {
               isSame = false;
            }
         })
      if (isSame) {
         output.innerHTML += "Object properties and values are matched."
      } else {
         output.innerHTML += "Object properties and values are not matched."
      }
   </script>
</body>
</html>

Gunakan kaedah array.every()

Kaedah JavaScript array.every() menyemak sama ada setiap elemen tatasusunan mengikut syarat tertentu. Sebagai contoh, kita boleh menggunakan kaedah array.every() untuk menyemak sama ada semua nombor tatasusunan kurang daripada 100.

Di sini, kami akan menggunakan kaedah array.every() untuk menyemak sama ada object1 mengandungi setiap atribut object2 dengan nilai yang sama.

Tatabahasa

Pengguna boleh menggunakan kaedah array.every() mengikut sintaks berikut untuk menentukan sama ada objek pertama mengandungi nilai sifat yang sama dengan objek kedua.

let result = Object.keys(table2).every((key) => table1[key] != undefined && table1[key] === table2[key]);

Dalam sintaks di atas, jika nilai harta tertentu tidak ditentukan, maka sifat itu tidak wujud dalam objek. Selepas itu, kami membandingkan nilai atribut.

Contoh

Dalam contoh di bawah, objek table1 mengandungi semua sifat yang mempunyai nilai yang setara dengan objek table1. Kami menggunakan Object.keys() untuk mendapatkan semua kunci dalam tatasusunan dan menggunakan kaedah every() pada tatasusunan.

Kami menghantar fungsi panggil balik sebagai parameter kepada kaedah every(), yang mengambil kunci sebagai parameter. Jadi kami menyemak sama ada kunci wujud dalam objek table1 dan jika ia ada, adakah ia mengandungi nilai yang sama dengan objek table2?

Mengembalikan benar jika objek table1 mengandungi setiap kunci objek table2 dan nilainya sama; jika tidak, false akan dikembalikan.



   

Using the array.every to compare the first object's property values with the second object's property value.

<script> let output = document.getElementById('output'); let table1 = { _id: 76, colour: "#456754", size: 30 } let table2 = { _id: 76, colour: "#456754", size: 30 } function compareObjectProperties(table1, table2) { let result = Object.keys(table2).every((key) =&gt; table1[key] != undefined &amp;&amp; table1[key] === table2[key]); if (result) { output.innerHTML += "Object properties and values are matched." } else { output.innerHTML += "Object properties and values are not matched." } } compareObjectProperties(table1, table2); </script>

Dalam tutorial ini, kami belajar tentang menggunakan kaedah yang berbeza untuk menyemak sama ada objek pertama mengandungi semua sifat objek kedua dengan nilai yang sama. Cara terbaik ialah menggunakan kaedah array.every() kerana ia mengandungi satu baris kod.

Atas ialah kandungan terperinci Bagaimana untuk membandingkan dua objek dalam JavaScript untuk menentukan sama ada objek pertama mengandungi nilai harta yang sama dengan objek kedua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam