gpt4 book ai didi

javascript - 获取嵌套对象属性的更好方法

转载 作者:行者123 更新时间:2023-11-29 18:21:09 26 4
gpt4 key购买 nike

通常在远程 API 调用的响应中,我会收到嵌套对象:

var response = {
data : {
users : [
{
name : 'Mr. White'
}
]
}
}

我想检查第一个用户的名字是否是'先生。 White',自然会想写类似的东西。

var existed = response.data.users[0].name === 'Mr. White'

但是我不能确定是否所有的对象都存在,所以为了避免异常我最终写成:

var existed = response && response.data && response.data.users && response.data.users[0].name === 'Mr. White'

有更好的方法吗?想到的另一个丑陋的选择是:

var existed = false;
try {
var existed = response.data.users[0].name === 'Mr. White';
} catch(e) { }

除了 vanilla javascript,我通常还有 underscore.js 和 jquery。

编辑:

糟糕,注意到我问了一个骗子 javascript test for existence of nested object key .

基于这些答案的一个有趣选项是:

var existed = (((response || {}).data || {}).users || [{}])[0].name === 'Mr. White';

最佳答案

你可以把这个顽皮的 try/catch block 隐藏在这样一个函数中:

function resolve(root, path){
try {
return (new Function(
'root', 'return root.' + path + ';'
))(root);
} catch (e) {}
}

var tree = { level1: [{ key: 'value' }] };
resolve(tree, 'level1[0].key'); // "value"
resolve(tree, 'level1[1].key'); // undefined

更多相关信息:https://stackoverflow.com/a/18381564/1636522

关于javascript - 获取嵌套对象属性的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18634266/

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