如何创建数组取决于是否在jQuery中设置了变量

How can I create an array depending on if variables are set in jQuery

本文关键字:jQuery 设置 变量 是否 取决于 何创建 创建 数组      更新时间:2023-11-05

所以我有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);
}

这是个好主意吗?

谢谢!

由于d是一个对象,您可以在它上面循环,删除值为null或空的属性:

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

另一种方法是创建一个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"}