JavaScript 如何比较对象数组
在本文章中,我们将尝试通过一些编码示例和理论解释来理解如何比较JavaScript中的对象数组。
让我们首先分析一下在JavaScript中声明对象数组的语法,如下所示:
语法: 我们可以使用以下语法来声明一个包含多个对象的数组:
let array_of_objects = [
{
property_name: value,
...
},
{
property_name: value,
...
},
...
]
现在在分析上面显示的语法之后,让我们看一个快速的示例,这将帮助我们更清楚地理解上面的语法。
示例1: 在这个示例中,我们将尝试创建一个包含多个对象的数组,这些对象包含多个属性(或键)以及它们的值,然后我们将尝试以不同的方式打印它们。
Javascript
let employees_details = [
{
employee_id: 1,
employee_name: "Aman",
employee_age: 22,
},
{
employee_id: 2,
employee_name: "Ramesh",
employee_age: 26,
},
{
employee_id: 3,
employee_name: "Suresh",
employee_age: 33,
},
];
console.log(
"Complete Array of Objects is as shown below: ");
console.log(employees_details);
console.log(
"\nEmployees Names and their respective ages are as follows: ");
employees_details.forEach((element) => {
console.log(element.employee_name + " : " + element.employee_age);
});
输出:
Complete Array of Objects is as shown below:
[
{ employee_id: 1, employee_name: 'Aman', employee_age: 22 },
{ employee_id: 2, employee_name: 'Ramesh', employee_age: 26 },
{ employee_id: 3, employee_name: 'Suresh', employee_age: 33 }
]
Employees Names and their respective ages are as follows:
Aman : 22
Ramesh : 26
Suresh : 33
现在让我们来看一下以下一组示例,这些示例将帮助我们理解比较两个对象数组的主要任务。
示例2:
- 在这个示例中,我们将创建两个对象数组(它们都具有不同数量的对象)和包含多个键值对的多个对象。
- 然后,我们将创建一个方法,该方法将仅负责逐个比较两个对象数组。
- 在该方法内部,我们首先将检查先前声明的两个对象数组的长度或大小,然后进一步的条件仅在此之后进行评估。
- 在检查它们的长度之后,我们将使用every()方法来检查第一个对象数组(或第一个对象数组的对象)中的所有元素在第二个对象数组中是否有匹配项,同时还使用some()方法。
- 最后,我们将使用console.log()方法将值(true或false)作为输出返回。
Javascript
let mechanical_students_details = [
{
student_id: 1,
student_name: "Ramesh",
student_age: 22,
},
{
student_id: 2,
student_name: "Suresh",
student_age: 26,
},
];
let cse_students_details = [
{
student_id: 1,
student_name: "Aman",
student_age: 23,
},
{
student_id: 2,
student_name: "Chaitanya",
student_age: 24,
},
{
student_id: 3,
student_name: "Dharmendra",
student_age: 21,
},
];
let compareTwoArrayOfObjects = (
first_array_of_objects,
second_array_of_objects
) => {
return (
first_array_of_objects.length === second_array_of_objects.length &&
first_array_of_objects.every((element_1) =>
second_array_of_objects.some(
(element_2) =>
element_1.student_name === element_2.student_name &&
element_1.student_age === element_2.student_age
)
)
);
};
console.log(
"Are these passed in array of objects equal? : " +
compareTwoArrayOfObjects(mechanical_students_details, cse_students_details)
);
输出:
Are these passed in array of objects equal? : false
示例3:
- 在这个示例中,我们将再次使用之前创建的两个对象数组,但是这里我们将改变我们的方法或者简单地避免做之前做过的事情。
- 代替手动检查或比较包含多个对象的两个数组中的每一个属性及其值,我们将在这里使用 Object.keys() 方法。
- 这个方法将考虑第一个对象数组的所有键,然后再次使用数组的 some() 方法来检查对象的属性和值之间的匹配,然后再使用 console.log() 方法 返回所得到的值(true或false)。
Javascript
let mechanical_students_details = [
{
student_id: 1,
student_name: "Ramesh",
student_age: 22,
},
{
student_id: 2,
student_name: "Suresh",
student_age: 26,
},
];
let cse_students_details = [
{
student_id: 1,
student_name: "Aman",
student_age: 23,
},
{
student_id: 2,
student_name: "Chaitanya",
student_age: 24,
},
{
student_id: 3,
student_name: "Dharmendra",
student_age: 21,
},
];
let compareTwoArrayOfObjects = (
first_array_of_objects,
second_array_of_objects
) => {
return (
first_array_of_objects.length === second_array_of_objects.length &&
first_array_of_objects.every((element_1) =>
second_array_of_objects.some((element_2) =>
Object.keys(element_1).every((key) => element_1[key] === element_2[key])
)
)
);
};
console.log(
"Are these passed in array of objects equal? : " +
compareTwoArrayOfObjects(mechanical_students_details, cse_students_details)
);
输出:
Are these passed in array of objects equal? : false
极客教程