gpt4 book ai didi

javascript - 如何检查对象结构是否存在?

转载 作者:可可西里 更新时间:2023-11-01 02:47:32 25 4
gpt4 key购买 nike

假设我从第 3 方源解析一个 JSON 对象:

var myObject = {
person_list: [
{ black_hair: {
list: [
'bob',
'john',
'allen'
]}
}
]
};

但是如果结构突然改变或者数据响应损坏,我如何检查结构的深度部分是否存在?

我可以

if ( myObject.person_list.black_hair.list !== undefined ) {
// do stuff
}

但在某些情况下,black_hair 可能不存在。如果它从对象中丢失,那么我会得到一个 Uncaught TypeError: Cannot read property 'list' of undefined。所以我能想到的检查整个结构是否完整的唯一方法是检查是否定义了每个级别:

if ( myObject.person_list !== undefined ) {
if ( myObject.person_list.black_hair !== undefined ) {
if ( myObject.person_list.black_hair.list !== undefined ) {
// do stuff
}
}
}

但这有点荒谬。有没有一种简单的方法可以在 JavaScript 中处理这个问题?是尝试,捕获最好的方法吗?

最佳答案

您可以定义一个函数来为您检查完整结构:

function defined_structure(obj, attrs) {

var tmp = obj;

for(i=0; i<attrs.length; ++i) {
if(tmp[attrs[i]] == undefined)
return false;
tmp = tmp[attrs[i]];
}

return true;
}

//...

if(defined_structure(myObject, ['person_list', 0, 'black_hair', 'list']) {
// Do stuff
}

第一个参数是要检查的结构对象,第二个参数是嵌套属性名称的数组。

更新:

正如@chiliNUT 所指出的,person_list 是一个数组。无论如何,此方法通过添加您要检查的项目的索引(即 ['person_list', 0, 'black_hair', 'list'])起作用。

关于javascript - 如何检查对象结构是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924464/

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