Итак, у меня есть 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];
}
d
на основе переменных, не так ли?
другим подходом было бы создание объекта 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"}
d
?