如何在 JavaScript 中检查对象上每个属性是否完全相同?
假设我们需要编写一个函数,比如 isSame(),该函数接收一个嵌套对象,并根据所有键是否具有相同的值返回一个布尔值。当我们说所有键时,我们的意思是所有最后一个键,比如,如果一个键的值是嵌套对象,我们要求遍历到嵌套对象的末尾并检查该值。
例如,如果对象为 −
const obj = {
a: 1,
b: 1,
c: {
aa: 1
}
};则该函数应返回 true,因为所有最后一个键都具有相同的值 (1)。因此,让我们针对这个问题编写一个递归解决方案。
示例
const obj = {
a: 1,
b: 1,
c: {
aa: 3
}
};
const allSame = (obj, value) => {
const keys = Object.keys(obj);
for(let i = 0; i < keys.length; i++){
if(typeof obj[keys[i]] === "object" &&
!Array.isArray(obj[keys[i]])){
return allSame(obj[keys[i]], value);
};
if(!value){
value = obj[keys[i]];
continue;
}
if(obj[keys[i]] !== value){
return false;
};
};
return true;
}
console.log(allSame(obj));
console.log(allSame({ a: 1, b: 1, c: { aa: 1 } }));
console.log(allSame({ a: { x: 1 }, b: 1, c: { aa: 1 } }));
console.log(allSame({ a: 1, b: 1, c: { aa: 2 } }));输出
控制台中将输出 −
false true true false
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP