如何在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
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短