获取包含NULL值的JavaScript / angularJS对象键

时间:2015-02-27 06:58:46

标签: javascript angularjs

我有绑定对象' 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对象中包含的所有键的列表,包括包含空值的键吗?

4 个答案:

答案 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);

Live output

答案 3 :(得分:0)

谢谢大家的回复,其实问题不在于JS代码,而是问题与angularJS绑定有关。当输入字段为空时,它不会在对象中放置任何键+值。这就是为什么我得到这样的对象

 var p = {}; // $scope.p is looks same as this

所以我没有从

获得任何钥匙
Object.keys(p); // is also working fine.

其他人发布的其他解决方案也可以正常使用。