Как я могу создать массив в зависимости от того, установлены ли переменные в jQuery

0

Итак, у меня есть 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);
}

Это хорошая идея?

Благодарю!

  • 0
    @lsmailp, для пояснения, вы уже создали d ?
  • 0
    да. Но если есть способ сделать это без его создания, может быть, это чище?
Показать ещё 1 комментарий
Теги:

2 ответа

2
Лучший ответ

Поскольку d - объект, вы можете просто перебрать его, удалив свойства, где значение равно null или пустое:

for (var k in d) {
  if (d[k] === null || d[k] === '') delete d[k];
}
  • 0
    Я думаю, что он говорит о том, как создать d на основе переменных, не так ли?
  • 0
    Да, но это решение работает.
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"} 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню