gpt4 book ai didi

javascript - 检查对象中包含 'property' 的嵌套对象的属性失败

转载 作者:太空宇宙 更新时间:2023-11-04 15:52:15 26 4
gpt4 key购买 nike

我有以下名为 this.props 的对象:

{
children: null,
location: {
action: 'POP',
query: {
seconds: '300'
}
}
}

查看this question后我编写了以下代码:

let seconds = 0;

console.log(this.props);

if('seconds' in this.props) {
seconds = parseInt(this.props.location.query.seconds, 10);
}

console.log(seconds);

在控制台中,对象按上述方式记录,但 记录为 0。

我不明白我的 if 检查有什么问题,即使嵌套对象具有正确的属性,条件似乎也失败了(问题是当没有查询对象时,整个 this.props 对象是空 - 所以我需要检查嵌套属性)。

最佳答案

秒数不在 this.props 中;正在查询中。 in 运算符不是递归的,只是第一级:

if('seconds' in this.props.location.query) {
seconds = parseInt(this.props.location.query.seconds, 10);
}

console.log(seconds); // 300

如果您想递归地执行此操作,请创建自己的函数:

let isIn = function (obj, key) {
return isObj(obj) ? (key in obj) || Object.values(obj).filter(f => isIn(f, key)).length > 0 : false;
}

其中isObj是一个函数,用于验证参数是否为对象。您可以使用 lodash 或等效项,或者制作类似的东西:

let isObj = t => (t !== null) && (typeof t === 'object');

关于javascript - 检查对象中包含 'property' 的嵌套对象的属性失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43016884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com