在 AJAX 响应中查找嵌套属性,这是 try/catch 的情况
Looking up nested properties in AJAX response, a case for try/catch?
所以我正在编写一个浏览器应用程序,它从许多不同的公共 API 获取数据(通过 JSONP),并使用这些数据来装饰我的本地记录。
是的,这可以事先在服务器端完成,但我还没有。
我以前从未在 JavaScript 中使用过 try/catch。在尝试在容易更改的响应中查找response.foo.bar.baz
时,现在是使用它的好时机吗?
或者,是否有一种更优雅的方法来查找深度嵌套属性,并且在找不到时不会引发错误?
写起来可能更容易:
try {
response.foo.bar.baz;
}
catch (e) {
//oops
}
比:
if( response && response.foo && response.foo.bar && "baz" in response.foo.bar ) {
}
else {
//oops
}
鉴于替代方案是这样的:
if ('foo' in response &&
'bar' in response.foo &&
'baz' in response.foo.baz)
{
...
}
在这种情况下,听起来try / catch
块可能是一个不错的选择!
你可以做这样的事情:
response && response.foo && response.foo.bar && response.foo.bar.baz
如果其中一个嵌套属性不存在,它将返回undefined
否则它将返回response.foo.bar.baz
的内容。
或者您可以使用此功能:
function getNestedProperty(firstObject, propertiesArray)
{
if(firstObject instanceof Object)
{
var currentObject = firstObject;
for(var i = 0; i < propertiesArray.length; i++)
{
if(currentObject.hasOwnProperty(propertiesArray[i]))
{
currentObject = currentObject[propertiesArray[i]];
}
else
{
return false;
}
}
return currentObject;
}
else
{
return false;
}
}
用法:
getNestedProperty(response, ['foo', 'bar', 'baz']);
相关文章:
- 这是什么 ==- javascript 运算符
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- Javascript袖珍参考,第121页:这是怎么回事;猴子补丁”;方法应该有效
- 你好,这是测试用例,我必须在函数中传递n个参数
- 这是什么“;要求“;事情
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- 为什么这是一个跨域请求
- 为什么这是真的:parseInt(1111111111111,2)===parseInt(111111111111,2)
- 什么'这是加载jQuery的最佳方式
- JS请求-这是不是过时了
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- Sombody在wordpress网站中注入了一些链接.可能是什么起源?这是怎么发生的
- 什么'这是谷歌分析跟踪代码使用的技术
- 可以'无法正确访问NODE_ENV环境变量,这是NODE.js的错误吗
- 在 AJAX 响应中查找嵌套属性,这是 try/catch 的情况
- 使用try-catch检索嵌套属性的值.这是一个有效的方法吗?