确定对象何时只具有某些属性
determine when an object only has certain properties
我正在创建一个对象,我使用它通过ajax将数据传回服务器。
属性是根据服务器更新应该包含的数据添加到对象的。其中两个属性在每个更新对象FruitID
和PeachID
但是,当一个update对象为ajax调用呈现自己并且只有这两个属性时,我想取消调用。
如何确定一个对象只包含某些属性?
谢谢你的建议。
var obj = {a:"property 1",b:"property 2"} // Or whatever object you want to check.
if(Object.keys(obj).length == 2 // If the object only has 2 keys,
&& obj["FruitID"] // And FruitID exists as property of the object,
&& obj["PeachID"]){ // And PeachID exists as property of the object,
// The object only contains FruitID & PeachID;
}
或者将其封装在函数中:
function isBaseObject(obj){
return !!(Object.keys(obj).length == 2 && obj["FruitID"] && obj["PeachID"]); // !! to cast the output to a boolean
}
isBaseObject({FruitID:"property 1",PeachID:"property 2"})
//true
isBaseObject({FruitID:"property 1",PeachID:"property 2", a:1})
//false
isBaseObject({a:1})
//false
听起来你想使用hasOwnProperty
if (myObject.hasOwnProperty("FruitID")) { ... }
另一个选择可能是使用Object.keys
,但它只支持在现代浏览器。不过,比较一下是否只存在这些属性会更容易。
您需要使用hasOwnProperty
。
o = new Object();
o.prop = 'exists';
o.hasOwnProperty('prop'); //returns true
相关文章:
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 使用onclick调用属性对象函数
- 嵌套为..in 循环,列出多维对象的属性(对象)
- 动态属性对象 - JSON
- 在不使用隔离范围angularjs自定义指令的情况下获取属性对象
- 通过属性传递属性/对象.Javascript
- Javascript:属性/对象的类型
- 访问JSON中的属性(对象)
- 属性对象Javascript不是用Jquery Deferred设置的
- 无法读取属性'#<对象>'未定义的获取错误
- Twitter中多属性对象的子字符串匹配
- 无法设置'data'属性'对象'标记.(只IE8)
- 更新数据属性对象属性值
- 将属性对象的选定对象从原型推入数组
- 将单个属性对象字面量的数组转换为仅包含其值的数组的最佳方法
- 寻找一种更简单的方法来检查是否多个属性&对象中的方法是未定义的
- 主干模型:带有get方法的空属性,但在属性对象中
- 如何赋值给"text"someText"属性对象在动能js
- Angularjs的数据绑定与数据属性对象
- 如何将一个嵌套的javascript对象转换为只有一级属性对象