gpt4 book ai didi

javascript - 在处理多级对象时,确保设置 JavaScript 对象而不是 undefined object 的最佳做法是什么?

转载 作者:行者123 更新时间:2023-11-30 10:12:40 25 4
gpt4 key购买 nike

我是一名 js 开发人员,在我们进行 API 调用并返回一些数据的环境中工作。返回数据的结构高度不一致,因此我们不能对返回数据做任何假设。

想象以下场景:

$.ajax({
success: function(data){
// Now I want to access a property 4 levels in
var length = data.results.users.length;
doSomeStuffWithLength(length);
}
})

确保 data.results.users.length 不是未定义的正确方法是什么?由于 API 的不一致,返回对象的每个级别都可能被破坏/未定义。我真的必须执行以下操作吗:

if (data && data.results && data.results.users && data.results.users.length){
var length = data.results.users.length;
doSomeStuffWithLength(length);
}

没有更优雅的解决方案吗?

最佳答案

您可以像这样创建辅助函数。期望具有如下结构的对象:

var someObj = {
some: {
other: {
third: 'bingo',
qwe: 'test'
}
}
};

有这样的东西就好了

getPropByPath(someObj, 'some.other.qwe');

因此 getPropByPath 的实现可能如下所示:

function getPropByPath(obj, path){
var parts = path.split('.'),
root = obj;

for(var i=0; i<parts.length; i++) {
if(root[parts[i]] !== 'undefined') {
root = root[parts[i]]
} else {
return false;
}
}
return root;
}

关于javascript - 在处理多级对象时,确保设置 JavaScript 对象而不是 undefined object 的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25618560/

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