如何根据是否在jQuery中设置变量来创建数组

时间:2013-11-27 18:09:29

标签: javascript jquery

所以我有5个变量:

var item_id
var status
var next_contact
var email
var phone_number
var comment

这些是在POST请求中发送到我的服务器的数组:

d = {'item_id': item_id, 'status': status, 'next_contact': next_contact, 'email': email, 'phone_number': phone_number, 'comment': comment}

在发出请求之前,我想检查哪些变量是空的,如果它们是空的,我想从POST请求中删除它们。

如何以最小化的方式实现这一目标?

我想为每个变量做这样的事情:

d = [];

if(email != '') {
   d.push('email': email);
}

这是个好主意吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

由于d对象,您只需循环删除值为null或为空的属性:

for (var k in d) {
  if (d[k] === null || d[k] === '') delete d[k];
}

答案 1 :(得分:0)

另一种方法是创建一个item对象,并将变量指定为属性。然后,您可以使用函数迭代此对象,并将值作为另一个可以传递给POST请求的对象返回。

// this would make a nice "class" or model
var item = {};

item.id = 1;
item.status = "complete";
item.email = undefined;
item.null = null;
item.empty = '';
// etc...

// get non falsey values
function getValues(item) {
  var values = {};
  for (var prop in item) {
    if (item.hasOwnProperty(prop) && item[prop]) {
      values[prop] = item[prop];
    }
  }
  return values;
}

d = getValues(item);
console.log(d); // {id: 1, status: "complete"}