api返回的数据中缺少一些属性,需要可靠的方法来检查属性
Some properties are missing from API's returned data, need solid way to check property
我知道api团队负责向请求数据的客户端发送正确的数据。但是,我还是想知道检查property是否存在的最好方法。
// when state property is missing from the api response
myObject = {
name : 'Scott',
addressInfo : {
address1 : '444 St Peter St',
address2 : 'Apartment D',
zipCode : '55555'
},
birthDate : '20000101'
}
或
// or when birtdate is missing
myObject = {
name : 'Scott',
addressInfo : {
address1 : '444 St Peter St',
address2 : 'Apartment D',
zipCode : '55555',
state : 'MN'
}
}
或
// when addressInfo is missing
myObject = {
name : 'Scott',
birthDate : '20000101'
}
下面的代码足够检查吗?
if (myObject.addressInfo !== undefined && myObject.addressInfo.state !== undefined) {
// console.log(
}
如果您愿意使用lodash或underscore之类的库,那么测试对象中是否存在键的一种非常方便的方法是_.has
方法:
var x = { "a": 1 };
_.has(x,"a"); //returns true
_.has(x,"b"); //returns false
state
值可以设置为undefined
,但仍是myObject
的属性;尝试使用Object.hasOwnProperty(property)
var myObject = {
name : 'Scott',
addressInfo : {
address1 : '444 St Peter St',
address2 : 'Apartment D',
zipCode : '55555'
},
birthDate : '20000101'
};
console.log(myObject.addressInfo.hasOwnProperty("state"))
检查属性是否存在的正确方法:
if(myObj.hasOwnProperty(myProp)){
alert("yes, i have that property");
}
和
if(myProp in myObj){
alert("yes, i have that property");
}
从回答:检查对象属性是否存在-使用变量
相关文章:
- 为什么NgModelController属性/方法以$开头
- 如何使用设置属性方法在jquery中更改css
- 全局向对象添加属性/方法
- AngularJS $http.delete 在“类型错误:无法分配给只读属性'方法'”中中断
- 添加属性/方法的明确最佳方法
- 扩展类时继承而不是覆盖属性/方法
- Javascript子类对象不保留基类的属性/方法
- 将模型属性方法发送到客户端 Sails Angular
- 错误:参数 4 的值无效.属性“方法”:意外属性
- 类型错误:无法读取 nodejs 应用程序中未定义的属性“方法”
- 属性/方法无法初始化indexedDB
- 在javascript中定义属性方法的适当模式;类”;
- 创建两个函数来计算对象属性/方法
- 当getElementById返回null时,取消对属性/方法的访问
- 自定义属性方法如何在Sails js中工作
- 通过js中的数组属性方法进行迭代
- 为什么要添加属性/方法到视图模型AFTER定义
- 在Angular中,在闭包中引用服务属性/方法最合适的方式是什么?
- 列出一个对象的所有属性/方法
- Javascript:添加属性方法问题