给定两个对象 obj1 和 obj2,任务是检查 obj1 是否包含 JavaScript 中 obj2 的所有属性值。
期望值:
//输入: obj1: { name: "John", age: 23; degree: "CS" } //obj2: {age: 23, degree: "CS"} //输出: true//输入: obj1: { name: "John", degree: "CS" } obj2: {name: "Max", age: 23, degree: "CS"} //输出: false
为了解决这个问题,我们遵循以下方法。
方法 1:解决这个问题是一种幼稚的方法。在此方法中,我们使用 for..在循环中和每次迭代中,我们检查两个对象的当前键是否相等,我们返回false,否则在完成循环后,我们返回true。
例:
<script>
// Define the first object
let obj1 = {
name: "John",
age: 23,
degree: "CS"
}
// Define the second object
let obj2 = {
age: 23,
degree: "CS"
}
// Define the function check
function check(obj1, obj2) {
// Iterate the obj2 using for..in
for (key in obj2) {
// Check if both objects do
// not have the equal values
// of same key
if (obj1[key] !== obj2[key]) {
return false;
}
}
return true
}
// Call the function
console.log(check(obj1, obj2))
</script>
输出:
true
方法 2:在这种方法中,我们使用 Object.keys() 方法创建 obj2 所有键的数组,然后使用 Array.every() 方法检查 obj2 的所有属性是否都等于 obj1。
例:
<script>
// Define the first object
let obj1 = {
name: "John",
age: 23,
degree: "CS"
}
// Define the Second object
let obj2 = {
age: 23,
degree: "CS"
}
// Define the function check
function check(obj1, obj2) {
return Object
// Get all the keys in array
.keys(obj2)
.every(val => obj1.hasOwnProperty(val)
&& obj1[val] === obj2[val])
}
// Call the function
console.log(check(obj1, obj2))
</script>
输出:
true