我有绑定对象' p'使用angularJS这样的输入字段
<input ng-model="p.p1" type="text" />
<input ng-model="p.p2" type="text" />
<input ng-model="p.p3" type="text" />
当这些输入为空时,我的对象似乎是这样的:
var p =
{
"p1": null,
"p2": null,
"p3": null
};
我试过了
Object.keys(p); // return [] (empty array)
任何人都可以告诉我如何获取JavaScript对象中包含的所有键的列表,包括包含空值的键吗?
答案 0 :(得分:0)
迭代for循环并获取那些具有null的键。
for(var key in p) {
if(p[key] == null) {
// do your stuff here!
}
}
答案 1 :(得分:0)
为什么不使用p.p1
?或者你可以随时使用p['p1']
?
如果你没有定义你想要访问它的密钥,垃圾收集器就可以清理它。
您需要在代码中放置一个直接访问该密钥的钩子,否则它将被清除。
答案 2 :(得分:0)
请尝试下面的一个。主要浏览器不支持Object.keys,因此有一个polyfill。
var p =
{
"p1": null,
"p2": null,
"p3": null
},key;
function getObjectKeys(p){
if(Object.keys){
key = Object.keys(p);
return key;
}else{
key = [];
for(var k in p){
key.push(k);
}
return key;
}
}
getObjectKeys(p);
答案 3 :(得分:0)
谢谢大家的回复,其实问题不在于JS代码,而是问题与angularJS绑定有关。当输入字段为空时,它不会在对象中放置任何键+值。这就是为什么我得到这样的对象
var p = {}; // $scope.p is looks same as this
所以我没有从
获得任何钥匙Object.keys(p); // is also working fine.
其他人发布的其他解决方案也可以正常使用。