如何找出对象中的属性是否存在
How to Find Out if a Property in an Object Exists
有没有人知道一个干净的方法来找出一个对象属性是否存在?下面是我的例子:
var test = {
a : 'west',
b : {
a : 'rest'
},
d : {
a : 'pest'
}
};
// I want to access 'a' in 'c'
typeof test.c.a; // fails!
typeof
似乎无法克服'c'
不存在以检查'a'
是否存在于其内部的事实(我也尝试过jQuery.type()
,也以同样的方式失败-我本以为它会在该函数内部进行错误检查)。
在这个例子中,我当然可以先检查'c'
是否存在,但在我的实际情况下,我有一个又大又深的对象,我需要从任何潜在的位置动态检索数据,所以如果有一个现成的解决方案,不需要使用try-catch
,那就太好了。
提前感谢!
我不能保证在任何js框架中都有找到嵌套属性的功能,但你当然可以自己动手。
hasOwnProperty是ECMA脚本标准的一部分。
if(test.hasOwnProperty("c"))
{
console.log("test.c = " + test.c);
}
如果你正在寻找深度嵌套的属性,那么你可以滚动你自己的函数来检查嵌套的属性是否存在,如果存在,返回它。
function hasNestedProperty(testObject, properties)
{
var maxDepth = properties.length;
var i, hasProperty = false;
var currObj = testObject;
while(hasProperty && i < maxDepth)
{
if(currObj.hasOwnProperty(properties[i])
{
currObj = currObj[properties[i]]);
i ++;
}
else
{
hasProperty = false;
}
}
return hasProperty;
}
相关文章:
- 检查对象的所有属性是否未定义
- 检查来自不同数组的两个元素的一个属性是否相等
- 正在检查属性的属性是否存在
- 在 Forerunner 数据库集合中创建主键时,key 属性是否可以位于集合对象的对象内部
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- Ember 1.0 预发行版支持属性是否已更改
- VueJS:检查属性是否具有来自其他属性的值
- 创建nonce并将其输出为数据属性是否存在漏洞
- 检查数组中的对象属性是否与具有相同ID的另一个对象重复
- 如何在Ember.js中创建一个计算属性来查看单个EmberData属性是否脏
- Javascript-在检查对象属性是否存在时避免异步竞争条件
- 如何指定输入元素中允许的最大字符数 - 设置 maxlength 属性是否足够
- 如何检查主干模型中的嵌套属性是否已更改
- HTML 文本框值属性是否安全免受 XSS 攻击
- 在 HTML 定位点中指定“语言”属性是否会更改事件行为
- 在灯泡阶段检查对象属性是否存在
- 给定元素本身的 aria-live 属性是否可以使用 javascript 动态设置
- 立即调用的属性是否可以引用它所分配到的对象
- 检查 css 属性是否应用了 !重要属性
- 检查数据属性是否具有值