Я проверяю три элемента в DOM, чтобы увидеть, пусты они или нет, чтобы я мог запускать только вызовы Ajax, которые я должен запускать и экономить на общей пропускной способности. Код работает, но «плохо пахнет». Вот мой источник.
const processValues = (area, city, text) => {
if (area.val() && city.val() && text.val()) {
return 'all';
} else if (area.val() && city.val() && !text.val()) {
return 'areaCity';
} else if (area.val() && !city.val() && text.val()) {
return 'areaText';
} else if (area.val() && !city.val() && !text.val()) {
return 'city';
} else if (!area.val() && city.val() && text.val()) {
return 'cityText';
} else if (!area.val() && !city.val() && text.val()) {
return 'text';
} else if (!area.val() && city.val() && !text.val()) {
return 'city';
} else {
return 'none';
}
};
Я буду повторять эту проверку в нескольких методах, и я буду использовать оператор switch в этих методах с возвращенными строковыми значениями. Если есть лучший способ сделать это, я был бы признателен.
1 ответ
После разговора с друзьями это было замечено как лучшее решение. Однако потребовалась одна корректировка возвращаемых значений; замените регистр с верблюжьего на заглавный. Я также использую константы, чтобы гарантировать правильное использование возвращаемых значений.
/**
* Check the three dom elements to see if they are empty or not and return detailed result.
* @param {jQuery|HTMLElement} area Area input field.
* @param {jQuery|HTMLElement} city City input field.
* @param {jQuery|HTMLElement} text Text input field.
* @return {string} Detailed result of which input fields are empty.
* If all are filled, returns "all".
* If none are filled, returns empty string.
*/
export const processValues = (area, city, text) => {
const a = (area.val()) ? 'Area' : '';
const c = (city.val()) ? 'City' : '';
const t = (text.val()) ? 'Text' : '';
if (a !== "" && c !== "" && t !== "") {
return "all";
} else {
return a + c + t;
}
};
export const ALL = "all";
export const AREA_CITY = "AreaCity";
export const AREA_TEXT = "AreaText";
export const AREA = "Area";
export const CITY_TEXT = "CityText";
export const CITY = "City";
export const TEXT = "Text";
```
Пожалуйста, попробуйте использовать либо
""
или же''
во всех случаях. Пожалуйста, также попробуйте использовать лучшее именование, чемa
,c
,t
. Зачем тебе это нужноexport
эти константы? Гдеnone
?— Питер Чала