尝试简化检查对象键是否为真并将其推送到另一个对象

时间:2016-05-12 03:04:49

标签: javascript angularjs forms

通过根据用户选择的复选框构建GET请求查询字符串,构建表单以与远程API进行交互。

我最初的想法是做一个if / else检查的清单,看看模型对象键是否为真,然后用对象键名做一个干净的数组。但是,会有更自动化的方法吗?

我正在思考angular.foreach的内容,但我无法弄清楚如何让对象键名作为值出现。

例如:

function submit() {
  var pushData = [];
  angular.foreach(vm.export, function(item, index){
    if (item == true) {
      pushData[item];
    }
  })
}

以下是它的目标:

vm.export = {
  'servers': true,
  'apps': false,
  'users': true,
  'userID': 1234
}

如何将具有TRUE值的键名称推送到 pushData 数组?

2 个答案:

答案 0 :(得分:1)

为什么不直接使用for循环?

Working Example

function submit(){
  var pushData = [];
  for (var prop in data) {
    if (data[prop] === true) {
      pushData.push(prop);
    }
  }
  return pushData;
}

答案 1 :(得分:1)

foreach有一个项目(数组中的对象/原语)和一个键。 所以你的pushData获得了一个名为" true"(item的值)而不是名称(键)的键。

var pushData = [];
angular.foreach(vm.export, function(item, key){
if (item === true) {
    pushData[key];
  }
});