[英]Checking if a nested object contains only single key-value pair in javascript
我想检查深度嵌套的对象是否由单个键值对组成,如果包含,则应返回true,否则返回false。
例如,我希望下面的代码返回true
,
var test = {
level1:
{
level2:
{
level3:'level3'
}
}
};
而下面的代码返回false
,
var test2 = {
level1: {
level2: {'a': '1', 'b': 2},
level3: {'a': '2', 'c': 4}
}
};
另外,以下代码应返回true
,
var test3 =
{
level1: {
level2: {
level3: {
level4: {
1: "1",
2: "2",
3: "3",
4: "4"
}
}
}
}
}
我为此编写了以下程序,但是它不起作用,
function checkNested(obj) {
if(typeof(obj) === 'object') {
if(Object.keys(obj).length === 1) {
var key = Object.keys(obj);
checkNested(obj[key])
} else {
return(false);
}
}
return(true);
}
有人可以建议我如何实现吗?
使用var key = Object.keys(obj);
, key
变成一个数组 (包含一个键),因此obj[key]
没有意义。 您可以改为破坏[key]
:
const [key] = Object.keys(obj);
return checkNested(obj[key])
(确保return
递归调用)
或者,甚至更好地使用Object.values
,因为您实际上并不关心键:
var test = { level1: { level2: { level3: 'level3' } } }; var test2 = { level1: { level2: 'level2', level3: 'level3' } }; function checkNested(obj) { if (typeof(obj) === 'object') { const values = Object.values(obj); if (values.length !== 1) { return false; } return checkNested(values[0]); } return true; } console.log(checkNested(test)); console.log(checkNested(test2));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.